from __future__ import absolute_import
import string, gettext
_ = gettext.gettext

EOF = None

E = {
    u"null-character": 
       _(u"Null character in input stream, replaced with U+FFFD."),
    u"invalid-codepoint": 
       _(u"Invalid codepoint in stream."),
    u"incorrectly-placed-solidus":
       _(u"Solidus (/) incorrectly placed in tag."),
    u"incorrect-cr-newline-entity":
       _(u"Incorrect CR newline entity, replaced with LF."),
    u"illegal-windows-1252-entity":
       _(u"Entity used with illegal number (windows-1252 reference)."),
    u"cant-convert-numeric-entity":
       _(u"Numeric entity couldn't be converted to character "
         u"(codepoint U+%(charAsInt)08x)."),
    u"illegal-codepoint-for-numeric-entity":
       _(u"Numeric entity represents an illegal codepoint: "
         u"U+%(charAsInt)08x."),
    u"numeric-entity-without-semicolon":
       _(u"Numeric entity didn't end with ';'."),
    u"expected-numeric-entity-but-got-eof":
       _(u"Numeric entity expected. Got end of file instead."),
    u"expected-numeric-entity":
       _(u"Numeric entity expected but none found."),
    u"named-entity-without-semicolon":
       _(u"Named entity didn't end with ';'."),
    u"expected-named-entity":
       _(u"Named entity expected. Got none."),
    u"attributes-in-end-tag":
       _(u"End tag contains unexpected attributes."),
    u'self-closing-flag-on-end-tag':
        _(u"End tag contains unexpected self-closing flag."),
    u"expected-tag-name-but-got-right-bracket":
       _(u"Expected tag name. Got '>' instead."),
    u"expected-tag-name-but-got-question-mark":
       _(u"Expected tag name. Got '?' instead. (HTML doesn't "
         u"support processing instructions.)"),
    u"expected-tag-name":
       _(u"Expected tag name. Got something else instead"),
    u"expected-closing-tag-but-got-right-bracket":
       _(u"Expected closing tag. Got '>' instead. Ignoring '</>'."),
    u"expected-closing-tag-but-got-eof":
       _(u"Expected closing tag. Unexpected end of file."),
    u"expected-closing-tag-but-got-char":
       _(u"Expected closing tag. Unexpected character '%(data)s' found."),
    u"eof-in-tag-name":
       _(u"Unexpected end of file in the tag name."),
    u"expected-attribute-name-but-got-eof":
       _(u"Unexpected end of file. Expected attribute name instead."),
    u"eof-in-attribute-name":
       _(u"Unexpected end of file in attribute name."),
    u"invalid-character-in-attribute-name":
        _(u"Invalid chracter in attribute name"),
    u"duplicate-attribute":
       _(u"Dropped duplicate attribute on tag."),
    u"expected-end-of-tag-name-but-got-eof":
       _(u"Unexpected end of file. Expected = or end of tag."),
    u"expected-attribute-value-but-got-eof":
       _(u"Unexpected end of file. Expected attribute value."),
    u"expected-attribute-value-but-got-right-bracket":
       _(u"Expected attribute value. Got '>' instead."),
    u'equals-in-unquoted-attribute-value':
        _(u"Unexpected = in unquoted attribute"),
    u'unexpected-character-in-unquoted-attribute-value':
        _(u"Unexpected character in unquoted attribute"),
    u"invalid-character-after-attribute-name":
       _(u"Unexpected character after attribute name."),
    u"unexpected-character-after-attribute-value":
       _(u"Unexpected character after attribute value."),
    u"eof-in-attribute-value-double-quote":
       _(u"Unexpected end of file in attribute value (\")."),
    u"eof-in-attribute-value-single-quote":
       _(u"Unexpected end of file in attribute value (')."),
    u"eof-in-attribute-value-no-quotes":
       _(u"Unexpected end of file in attribute value."),
    u"unexpected-EOF-after-solidus-in-tag":
        _(u"Unexpected end of file in tag. Expected >"),
    u"unexpected-character-after-soldius-in-tag":
        _(u"Unexpected character after / in tag. Expected >"),
    u"expected-dashes-or-doctype":
       _(u"Expected '--' or 'DOCTYPE'. Not found."),
    u"unexpected-bang-after-double-dash-in-comment":
        _(u"Unexpected ! after -- in comment"),
    u"unexpected-space-after-double-dash-in-comment":
        _(u"Unexpected space after -- in comment"),
    u"incorrect-comment":
       _(u"Incorrect comment."),
    u"eof-in-comment":
       _(u"Unexpected end of file in comment."),
    u"eof-in-comment-end-dash":
       _(u"Unexpected end of file in comment (-)"),
    u"unexpected-dash-after-double-dash-in-comment":
       _(u"Unexpected '-' after '--' found in comment."),
    u"eof-in-comment-double-dash":
       _(u"Unexpected end of file in comment (--)."),
    u"eof-in-comment-end-space-state":
       _(u"Unexpected end of file in comment."),
    u"eof-in-comment-end-bang-state":
       _(u"Unexpected end of file in comment."),
    u"unexpected-char-in-comment":
       _(u"Unexpected character in comment found."),
    u"need-space-after-doctype":
       _(u"No space after literal string 'DOCTYPE'."),
    u"expected-doctype-name-but-got-right-bracket":
       _(u"Unexpected > character. Expected DOCTYPE name."),
    u"expected-doctype-name-but-got-eof":
       _(u"Unexpected end of file. Expected DOCTYPE name."),
    u"eof-in-doctype-name":
       _(u"Unexpected end of file in DOCTYPE name."),
    u"eof-in-doctype":
       _(u"Unexpected end of file in DOCTYPE."),
    u"expected-space-or-right-bracket-in-doctype":
       _(u"Expected space or '>'. Got '%(data)s'"),
    u"unexpected-end-of-doctype":
       _(u"Unexpected end of DOCTYPE."),
    u"unexpected-char-in-doctype":
       _(u"Unexpected character in DOCTYPE."),
    u"eof-in-innerhtml":
       _(u"XXX innerHTML EOF"),
    u"unexpected-doctype":
       _(u"Unexpected DOCTYPE. Ignored."),
    u"non-html-root":
       _(u"html needs to be the first start tag."),
    u"expected-doctype-but-got-eof":
       _(u"Unexpected End of file. Expected DOCTYPE."),
    u"unknown-doctype":
       _(u"Erroneous DOCTYPE."),
    u"expected-doctype-but-got-chars":
       _(u"Unexpected non-space characters. Expected DOCTYPE."),
    u"expected-doctype-but-got-start-tag":
       _(u"Unexpected start tag (%(name)s). Expected DOCTYPE."),
    u"expected-doctype-but-got-end-tag":
       _(u"Unexpected end tag (%(name)s). Expected DOCTYPE."),
    u"end-tag-after-implied-root":
       _(u"Unexpected end tag (%(name)s) after the (implied) root element."),
    u"expected-named-closing-tag-but-got-eof":
       _(u"Unexpected end of file. Expected end tag (%(name)s)."),
    u"two-heads-are-not-better-than-one":
       _(u"Unexpected start tag head in existing head. Ignored."),
    u"unexpected-end-tag":
       _(u"Unexpected end tag (%(name)s). Ignored."),
    u"unexpected-start-tag-out-of-my-head":
       _(u"Unexpected start tag (%(name)s) that can be in head. Moved."),
    u"unexpected-start-tag":
       _(u"Unexpected start tag (%(name)s)."),
    u"missing-end-tag":
       _(u"Missing end tag (%(name)s)."),
    u"missing-end-tags":
       _(u"Missing end tags (%(name)s)."),
    u"unexpected-start-tag-implies-end-tag":
       _(u"Unexpected start tag (%(startName)s) "
         u"implies end tag (%(endName)s)."),
    u"unexpected-start-tag-treated-as":
       _(u"Unexpected start tag (%(originalName)s). Treated as %(newName)s."),
    u"deprecated-tag":
       _(u"Unexpected start tag %(name)s. Don't use it!"),
    u"unexpected-start-tag-ignored":
       _(u"Unexpected start tag %(name)s. Ignored."),
    u"expected-one-end-tag-but-got-another":
       _(u"Unexpected end tag (%(gotName)s). "
         u"Missing end tag (%(expectedName)s)."),
    u"end-tag-too-early":
       _(u"End tag (%(name)s) seen too early. Expected other end tag."),
    u"end-tag-too-early-named":
       _(u"Unexpected end tag (%(gotName)s). Expected end tag (%(expectedName)s)."),
    u"end-tag-too-early-ignored":
       _(u"End tag (%(name)s) seen too early. Ignored."),
    u"adoption-agency-1.1":
       _(u"End tag (%(name)s) violates step 1, "
         u"paragraph 1 of the adoption agency algorithm."),
    u"adoption-agency-1.2":
       _(u"End tag (%(name)s) violates step 1, "
         u"paragraph 2 of the adoption agency algorithm."),
    u"adoption-agency-1.3":
       _(u"End tag (%(name)s) violates step 1, "
         u"paragraph 3 of the adoption agency algorithm."),
    u"unexpected-end-tag-treated-as":
       _(u"Unexpected end tag (%(originalName)s). Treated as %(newName)s."),
    u"no-end-tag":
       _(u"This element (%(name)s) has no end tag."),
    u"unexpected-implied-end-tag-in-table":
       _(u"Unexpected implied end tag (%(name)s) in the table phase."),
    u"unexpected-implied-end-tag-in-table-body":
       _(u"Unexpected implied end tag (%(name)s) in the table body phase."),
    u"unexpected-char-implies-table-voodoo":
       _(u"Unexpected non-space characters in "
         u"table context caused voodoo mode."),
    u"unexpected-hidden-input-in-table":
       _(u"Unexpected input with type hidden in table context."),
    u"unexpected-form-in-table":
       _(u"Unexpected form in table context."),
    u"unexpected-start-tag-implies-table-voodoo":
       _(u"Unexpected start tag (%(name)s) in "
         u"table context caused voodoo mode."),
    u"unexpected-end-tag-implies-table-voodoo":
       _(u"Unexpected end tag (%(name)s) in "
         u"table context caused voodoo mode."),
    u"unexpected-cell-in-table-body":
       _(u"Unexpected table cell start tag (%(name)s) "
         u"in the table body phase."),
    u"unexpected-cell-end-tag":
       _(u"Got table cell end tag (%(name)s) "
         u"while required end tags are missing."),
    u"unexpected-end-tag-in-table-body":
       _(u"Unexpected end tag (%(name)s) in the table body phase. Ignored."),
    u"unexpected-implied-end-tag-in-table-row":
       _(u"Unexpected implied end tag (%(name)s) in the table row phase."),
    u"unexpected-end-tag-in-table-row":
       _(u"Unexpected end tag (%(name)s) in the table row phase. Ignored."),
    u"unexpected-select-in-select":
       _(u"Unexpected select start tag in the select phase "
         u"treated as select end tag."),
    u"unexpected-input-in-select":
       _(u"Unexpected input start tag in the select phase."),
    u"unexpected-start-tag-in-select":
       _(u"Unexpected start tag token (%(name)s in the select phase. "
         u"Ignored."),
    u"unexpected-end-tag-in-select":
       _(u"Unexpected end tag (%(name)s) in the select phase. Ignored."),
    u"unexpected-table-element-start-tag-in-select-in-table":
       _(u"Unexpected table element start tag (%(name)s) in the select in table phase."),
    u"unexpected-table-element-end-tag-in-select-in-table":
       _(u"Unexpected table element end tag (%(name)s) in the select in table phase."),
    u"unexpected-char-after-body":
       _(u"Unexpected non-space characters in the after body phase."),
    u"unexpected-start-tag-after-body":
       _(u"Unexpected start tag token (%(name)s)"
         u" in the after body phase."),
    u"unexpected-end-tag-after-body":
       _(u"Unexpected end tag token (%(name)s)"
         u" in the after body phase."),
    u"unexpected-char-in-frameset":
       _(u"Unepxected characters in the frameset phase. Characters ignored."),
    u"unexpected-start-tag-in-frameset":
       _(u"Unexpected start tag token (%(name)s)"
         u" in the frameset phase. Ignored."),
    u"unexpected-frameset-in-frameset-innerhtml":
       _(u"Unexpected end tag token (frameset) "
         u"in the frameset phase (innerHTML)."),
    u"unexpected-end-tag-in-frameset":
       _(u"Unexpected end tag token (%(name)s)"
         u" in the frameset phase. Ignored."),
    u"unexpected-char-after-frameset":
       _(u"Unexpected non-space characters in the "
         u"after frameset phase. Ignored."),
    u"unexpected-start-tag-after-frameset":
       _(u"Unexpected start tag (%(name)s)"
         u" in the after frameset phase. Ignored."),
    u"unexpected-end-tag-after-frameset":
       _(u"Unexpected end tag (%(name)s)"
         u" in the after frameset phase. Ignored."),
    u"unexpected-end-tag-after-body-innerhtml":
       _(u"Unexpected end tag after body(innerHtml)"),
    u"expected-eof-but-got-char":
       _(u"Unexpected non-space characters. Expected end of file."),
    u"expected-eof-but-got-start-tag":
       _(u"Unexpected start tag (%(name)s)"
         u". Expected end of file."),
    u"expected-eof-but-got-end-tag":
       _(u"Unexpected end tag (%(name)s)"
         u". Expected end of file."),
    u"eof-in-table":
       _(u"Unexpected end of file. Expected table content."),
    u"eof-in-select":
       _(u"Unexpected end of file. Expected select content."),
    u"eof-in-frameset":
       _(u"Unexpected end of file. Expected frameset content."),
    u"eof-in-script-in-script":
       _(u"Unexpected end of file. Expected script content."),
    u"eof-in-foreign-lands":
       _(u"Unexpected end of file. Expected foreign content"),
    u"non-void-element-with-trailing-solidus":
       _(u"Trailing solidus not allowed on element %(name)s"),
    u"unexpected-html-element-in-foreign-content":
       _(u"Element %(name)s not allowed in a non-html context"),
    u"unexpected-end-tag-before-html":
        _(u"Unexpected end tag (%(name)s) before html."),
    u"XXX-undefined-error":
        (u"Undefined error (this sucks and should be fixed)"),
}

namespaces = {
    u"html":u"http://www.w3.org/1999/xhtml",
    u"mathml":u"http://www.w3.org/1998/Math/MathML",
    u"svg":u"http://www.w3.org/2000/svg",
    u"xlink":u"http://www.w3.org/1999/xlink",
    u"xml":u"http://www.w3.org/XML/1998/namespace",
    u"xmlns":u"http://www.w3.org/2000/xmlns/"
}

scopingElements = frozenset((
    (namespaces[u"html"], u"applet"),
    (namespaces[u"html"], u"caption"),
    (namespaces[u"html"], u"html"),
    (namespaces[u"html"], u"marquee"),
    (namespaces[u"html"], u"object"),
    (namespaces[u"html"], u"table"),
    (namespaces[u"html"], u"td"),
    (namespaces[u"html"], u"th"),
    (namespaces[u"mathml"], u"mi"),
    (namespaces[u"mathml"], u"mo"),
    (namespaces[u"mathml"], u"mn"),
    (namespaces[u"mathml"], u"ms"),
    (namespaces[u"mathml"], u"mtext"),
    (namespaces[u"mathml"], u"annotation-xml"),
    (namespaces[u"svg"], u"foreignObject"),
    (namespaces[u"svg"], u"desc"),
    (namespaces[u"svg"], u"title"),
))

formattingElements = frozenset((
    (namespaces[u"html"], u"a"),
    (namespaces[u"html"], u"b"),
    (namespaces[u"html"], u"big"),
    (namespaces[u"html"], u"code"),
    (namespaces[u"html"], u"em"),
    (namespaces[u"html"], u"font"),
    (namespaces[u"html"], u"i"),
    (namespaces[u"html"], u"nobr"),
    (namespaces[u"html"], u"s"),
    (namespaces[u"html"], u"small"),
    (namespaces[u"html"], u"strike"),
    (namespaces[u"html"], u"strong"),
    (namespaces[u"html"], u"tt"),
    (namespaces[u"html"], u"u")
))

specialElements = frozenset((
    (namespaces[u"html"], u"address"),
    (namespaces[u"html"], u"applet"),
    (namespaces[u"html"], u"area"),
    (namespaces[u"html"], u"article"),
    (namespaces[u"html"], u"aside"),
    (namespaces[u"html"], u"base"),
    (namespaces[u"html"], u"basefont"),
    (namespaces[u"html"], u"bgsound"),
    (namespaces[u"html"], u"blockquote"),
    (namespaces[u"html"], u"body"),
    (namespaces[u"html"], u"br"),
    (namespaces[u"html"], u"button"),
    (namespaces[u"html"], u"caption"),
    (namespaces[u"html"], u"center"),
    (namespaces[u"html"], u"col"),
    (namespaces[u"html"], u"colgroup"),
    (namespaces[u"html"], u"command"),
    (namespaces[u"html"], u"dd"),
    (namespaces[u"html"], u"details"),
    (namespaces[u"html"], u"dir"),
    (namespaces[u"html"], u"div"),
    (namespaces[u"html"], u"dl"),
    (namespaces[u"html"], u"dt"),
    (namespaces[u"html"], u"embed"),
    (namespaces[u"html"], u"fieldset"),
    (namespaces[u"html"], u"figure"),
    (namespaces[u"html"], u"footer"),
    (namespaces[u"html"], u"form"),
    (namespaces[u"html"], u"frame"),
    (namespaces[u"html"], u"frameset"),
    (namespaces[u"html"], u"h1"),
    (namespaces[u"html"], u"h2"),
    (namespaces[u"html"], u"h3"),
    (namespaces[u"html"], u"h4"),
    (namespaces[u"html"], u"h5"),
    (namespaces[u"html"], u"h6"),
    (namespaces[u"html"], u"head"),
    (namespaces[u"html"], u"header"),
    (namespaces[u"html"], u"hr"),
    (namespaces[u"html"], u"html"),
    (namespaces[u"html"], u"iframe"),
    # Note that image is commented out in the spec as "this isn't an
    # element that can end up on the stack, so it doesn't matter,"
    (namespaces[u"html"], u"image"), 
    (namespaces[u"html"], u"img"),
    (namespaces[u"html"], u"input"),
    (namespaces[u"html"], u"isindex"),
    (namespaces[u"html"], u"li"),
    (namespaces[u"html"], u"link"),
    (namespaces[u"html"], u"listing"),
    (namespaces[u"html"], u"marquee"),
    (namespaces[u"html"], u"menu"),
    (namespaces[u"html"], u"meta"),
    (namespaces[u"html"], u"nav"),
    (namespaces[u"html"], u"noembed"),
    (namespaces[u"html"], u"noframes"),
    (namespaces[u"html"], u"noscript"),
    (namespaces[u"html"], u"object"),
    (namespaces[u"html"], u"ol"),
    (namespaces[u"html"], u"p"),
    (namespaces[u"html"], u"param"),
    (namespaces[u"html"], u"plaintext"),
    (namespaces[u"html"], u"pre"),
    (namespaces[u"html"], u"script"),
    (namespaces[u"html"], u"section"),
    (namespaces[u"html"], u"select"),
    (namespaces[u"html"], u"style"),
    (namespaces[u"html"], u"table"),
    (namespaces[u"html"], u"tbody"),
    (namespaces[u"html"], u"td"),
    (namespaces[u"html"], u"textarea"),
    (namespaces[u"html"], u"tfoot"),
    (namespaces[u"html"], u"th"),
    (namespaces[u"html"], u"thead"),
    (namespaces[u"html"], u"title"),
    (namespaces[u"html"], u"tr"),
    (namespaces[u"html"], u"ul"),
    (namespaces[u"html"], u"wbr"),
    (namespaces[u"html"], u"xmp"),
    (namespaces[u"svg"], u"foreignObject")
))

htmlIntegrationPointElements = frozenset((
    (namespaces[u"mathml"], u"annotaion-xml"),
    (namespaces[u"svg"], u"foreignObject"),
    (namespaces[u"svg"], u"desc"),
    (namespaces[u"svg"], u"title")
))

mathmlTextIntegrationPointElements = frozenset((
    (namespaces[u"mathml"], u"mi"),
    (namespaces[u"mathml"], u"mo"),
    (namespaces[u"mathml"], u"mn"),
    (namespaces[u"mathml"], u"ms"),
    (namespaces[u"mathml"], u"mtext")
))

spaceCharacters = frozenset((
    u"\t",
    u"\n",
    u"\u000C",
    u" ",
    u"\r"
))

tableInsertModeElements = frozenset((
    u"table",
    u"tbody",
    u"tfoot",
    u"thead",
    u"tr"
))

asciiLowercase = frozenset(string.ascii_lowercase)
asciiUppercase = frozenset(string.ascii_uppercase)
asciiLetters = frozenset(string.ascii_letters)
digits = frozenset(string.digits)
hexDigits = frozenset(string.hexdigits)

asciiUpper2Lower = dict([(ord(c),ord(c.lower()))
    for c in string.ascii_uppercase])

# Heading elements need to be ordered
headingElements = (
    u"h1",
    u"h2",
    u"h3",
    u"h4",
    u"h5",
    u"h6"
)

voidElements = frozenset((
    u"base",
    u"command",
    u"event-source",
    u"link",
    u"meta",
    u"hr",
    u"br",
    u"img",
    u"embed",
    u"param",
    u"area",
    u"col",
    u"input",
    u"source",
    u"track"
))

cdataElements = frozenset((u'title', u'textarea'))

rcdataElements = frozenset((
    u'style',
    u'script',
    u'xmp',
    u'iframe',
    u'noembed',
    u'noframes',
    u'noscript'
))

booleanAttributes = {
    u"": frozenset((u"irrelevant",)),
    u"style": frozenset((u"scoped",)),
    u"img": frozenset((u"ismap",)),
    u"audio": frozenset((u"autoplay",u"controls")),
    u"video": frozenset((u"autoplay",u"controls")),
    u"script": frozenset((u"defer", u"async")),
    u"details": frozenset((u"open",)),
    u"datagrid": frozenset((u"multiple", u"disabled")),
    u"command": frozenset((u"hidden", u"disabled", u"checked", u"default")),
    u"hr": frozenset((u"noshade")),
    u"menu": frozenset((u"autosubmit",)),
    u"fieldset": frozenset((u"disabled", u"readonly")),
    u"option": frozenset((u"disabled", u"readonly", u"selected")),
    u"optgroup": frozenset((u"disabled", u"readonly")),
    u"button": frozenset((u"disabled", u"autofocus")),
    u"input": frozenset((u"disabled", u"readonly", u"required", u"autofocus", u"checked", u"ismap")),
    u"select": frozenset((u"disabled", u"readonly", u"autofocus", u"multiple")),
    u"output": frozenset((u"disabled", u"readonly")),
}

# entitiesWindows1252 has to be _ordered_ and needs to have an index. It
# therefore can't be a frozenset.
entitiesWindows1252 = (
    8364,  # 0x80  0x20AC  EURO SIGN
    65533, # 0x81          UNDEFINED
    8218,  # 0x82  0x201A  SINGLE LOW-9 QUOTATION MARK
    402,   # 0x83  0x0192  LATIN SMALL LETTER F WITH HOOK
    8222,  # 0x84  0x201E  DOUBLE LOW-9 QUOTATION MARK
    8230,  # 0x85  0x2026  HORIZONTAL ELLIPSIS
    8224,  # 0x86  0x2020  DAGGER
    8225,  # 0x87  0x2021  DOUBLE DAGGER
    710,   # 0x88  0x02C6  MODIFIER LETTER CIRCUMFLEX ACCENT
    8240,  # 0x89  0x2030  PER MILLE SIGN
    352,   # 0x8A  0x0160  LATIN CAPITAL LETTER S WITH CARON
    8249,  # 0x8B  0x2039  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
    338,   # 0x8C  0x0152  LATIN CAPITAL LIGATURE OE
    65533, # 0x8D          UNDEFINED
    381,   # 0x8E  0x017D  LATIN CAPITAL LETTER Z WITH CARON
    65533, # 0x8F          UNDEFINED
    65533, # 0x90          UNDEFINED
    8216,  # 0x91  0x2018  LEFT SINGLE QUOTATION MARK
    8217,  # 0x92  0x2019  RIGHT SINGLE QUOTATION MARK
    8220,  # 0x93  0x201C  LEFT DOUBLE QUOTATION MARK
    8221,  # 0x94  0x201D  RIGHT DOUBLE QUOTATION MARK
    8226,  # 0x95  0x2022  BULLET
    8211,  # 0x96  0x2013  EN DASH
    8212,  # 0x97  0x2014  EM DASH
    732,   # 0x98  0x02DC  SMALL TILDE
    8482,  # 0x99  0x2122  TRADE MARK SIGN
    353,   # 0x9A  0x0161  LATIN SMALL LETTER S WITH CARON
    8250,  # 0x9B  0x203A  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
    339,   # 0x9C  0x0153  LATIN SMALL LIGATURE OE
    65533, # 0x9D          UNDEFINED
    382,   # 0x9E  0x017E  LATIN SMALL LETTER Z WITH CARON
    376    # 0x9F  0x0178  LATIN CAPITAL LETTER Y WITH DIAERESIS
)

xmlEntities = frozenset((u'lt;', u'gt;', u'amp;', u'apos;', u'quot;'))

entities = {
    u"AElig": u"\xc6",
    u"AElig;": u"\xc6",
    u"AMP": u"&",
    u"AMP;": u"&",
    u"Aacute": u"\xc1",
    u"Aacute;": u"\xc1",
    u"Abreve;": u"\u0102",
    u"Acirc": u"\xc2",
    u"Acirc;": u"\xc2",
    u"Acy;": u"\u0410",
    u"Afr;": u"\U0001d504",
    u"Agrave": u"\xc0",
    u"Agrave;": u"\xc0",
    u"Alpha;": u"\u0391",
    u"Amacr;": u"\u0100",
    u"And;": u"\u2a53",
    u"Aogon;": u"\u0104",
    u"Aopf;": u"\U0001d538",
    u"ApplyFunction;": u"\u2061",
    u"Aring": u"\xc5",
    u"Aring;": u"\xc5",
    u"Ascr;": u"\U0001d49c",
    u"Assign;": u"\u2254",
    u"Atilde": u"\xc3",
    u"Atilde;": u"\xc3",
    u"Auml": u"\xc4",
    u"Auml;": u"\xc4",
    u"Backslash;": u"\u2216",
    u"Barv;": u"\u2ae7",
    u"Barwed;": u"\u2306",
    u"Bcy;": u"\u0411",
    u"Because;": u"\u2235",
    u"Bernoullis;": u"\u212c",
    u"Beta;": u"\u0392",
    u"Bfr;": u"\U0001d505",
    u"Bopf;": u"\U0001d539",
    u"Breve;": u"\u02d8",
    u"Bscr;": u"\u212c",
    u"Bumpeq;": u"\u224e",
    u"CHcy;": u"\u0427",
    u"COPY": u"\xa9",
    u"COPY;": u"\xa9",
    u"Cacute;": u"\u0106",
    u"Cap;": u"\u22d2",
    u"CapitalDifferentialD;": u"\u2145",
    u"Cayleys;": u"\u212d",
    u"Ccaron;": u"\u010c",
    u"Ccedil": u"\xc7",
    u"Ccedil;": u"\xc7",
    u"Ccirc;": u"\u0108",
    u"Cconint;": u"\u2230",
    u"Cdot;": u"\u010a",
    u"Cedilla;": u"\xb8",
    u"CenterDot;": u"\xb7",
    u"Cfr;": u"\u212d",
    u"Chi;": u"\u03a7",
    u"CircleDot;": u"\u2299",
    u"CircleMinus;": u"\u2296",
    u"CirclePlus;": u"\u2295",
    u"CircleTimes;": u"\u2297",
    u"ClockwiseContourIntegral;": u"\u2232",
    u"CloseCurlyDoubleQuote;": u"\u201d",
    u"CloseCurlyQuote;": u"\u2019",
    u"Colon;": u"\u2237",
    u"Colone;": u"\u2a74",
    u"Congruent;": u"\u2261",
    u"Conint;": u"\u222f",
    u"ContourIntegral;": u"\u222e",
    u"Copf;": u"\u2102",
    u"Coproduct;": u"\u2210",
    u"CounterClockwiseContourIntegral;": u"\u2233",
    u"Cross;": u"\u2a2f",
    u"Cscr;": u"\U0001d49e",
    u"Cup;": u"\u22d3",
    u"CupCap;": u"\u224d",
    u"DD;": u"\u2145",
    u"DDotrahd;": u"\u2911",
    u"DJcy;": u"\u0402",
    u"DScy;": u"\u0405",
    u"DZcy;": u"\u040f",
    u"Dagger;": u"\u2021",
    u"Darr;": u"\u21a1",
    u"Dashv;": u"\u2ae4",
    u"Dcaron;": u"\u010e",
    u"Dcy;": u"\u0414",
    u"Del;": u"\u2207",
    u"Delta;": u"\u0394",
    u"Dfr;": u"\U0001d507",
    u"DiacriticalAcute;": u"\xb4",
    u"DiacriticalDot;": u"\u02d9",
    u"DiacriticalDoubleAcute;": u"\u02dd",
    u"DiacriticalGrave;": u"`",
    u"DiacriticalTilde;": u"\u02dc",
    u"Diamond;": u"\u22c4",
    u"DifferentialD;": u"\u2146",
    u"Dopf;": u"\U0001d53b",
    u"Dot;": u"\xa8",
    u"DotDot;": u"\u20dc",
    u"DotEqual;": u"\u2250",
    u"DoubleContourIntegral;": u"\u222f",
    u"DoubleDot;": u"\xa8",
    u"DoubleDownArrow;": u"\u21d3",
    u"DoubleLeftArrow;": u"\u21d0",
    u"DoubleLeftRightArrow;": u"\u21d4",
    u"DoubleLeftTee;": u"\u2ae4",
    u"DoubleLongLeftArrow;": u"\u27f8",
    u"DoubleLongLeftRightArrow;": u"\u27fa",
    u"DoubleLongRightArrow;": u"\u27f9",
    u"DoubleRightArrow;": u"\u21d2",
    u"DoubleRightTee;": u"\u22a8",
    u"DoubleUpArrow;": u"\u21d1",
    u"DoubleUpDownArrow;": u"\u21d5",
    u"DoubleVerticalBar;": u"\u2225",
    u"DownArrow;": u"\u2193",
    u"DownArrowBar;": u"\u2913",
    u"DownArrowUpArrow;": u"\u21f5",
    u"DownBreve;": u"\u0311",
    u"DownLeftRightVector;": u"\u2950",
    u"DownLeftTeeVector;": u"\u295e",
    u"DownLeftVector;": u"\u21bd",
    u"DownLeftVectorBar;": u"\u2956",
    u"DownRightTeeVector;": u"\u295f",
    u"DownRightVector;": u"\u21c1",
    u"DownRightVectorBar;": u"\u2957",
    u"DownTee;": u"\u22a4",
    u"DownTeeArrow;": u"\u21a7",
    u"Downarrow;": u"\u21d3",
    u"Dscr;": u"\U0001d49f",
    u"Dstrok;": u"\u0110",
    u"ENG;": u"\u014a",
    u"ETH": u"\xd0",
    u"ETH;": u"\xd0",
    u"Eacute": u"\xc9",
    u"Eacute;": u"\xc9",
    u"Ecaron;": u"\u011a",
    u"Ecirc": u"\xca",
    u"Ecirc;": u"\xca",
    u"Ecy;": u"\u042d",
    u"Edot;": u"\u0116",
    u"Efr;": u"\U0001d508",
    u"Egrave": u"\xc8",
    u"Egrave;": u"\xc8",
    u"Element;": u"\u2208",
    u"Emacr;": u"\u0112",
    u"EmptySmallSquare;": u"\u25fb",
    u"EmptyVerySmallSquare;": u"\u25ab",
    u"Eogon;": u"\u0118",
    u"Eopf;": u"\U0001d53c",
    u"Epsilon;": u"\u0395",
    u"Equal;": u"\u2a75",
    u"EqualTilde;": u"\u2242",
    u"Equilibrium;": u"\u21cc",
    u"Escr;": u"\u2130",
    u"Esim;": u"\u2a73",
    u"Eta;": u"\u0397",
    u"Euml": u"\xcb",
    u"Euml;": u"\xcb",
    u"Exists;": u"\u2203",
    u"ExponentialE;": u"\u2147",
    u"Fcy;": u"\u0424",
    u"Ffr;": u"\U0001d509",
    u"FilledSmallSquare;": u"\u25fc",
    u"FilledVerySmallSquare;": u"\u25aa",
    u"Fopf;": u"\U0001d53d",
    u"ForAll;": u"\u2200",
    u"Fouriertrf;": u"\u2131",
    u"Fscr;": u"\u2131",
    u"GJcy;": u"\u0403",
    u"GT": u">",
    u"GT;": u">",
    u"Gamma;": u"\u0393",
    u"Gammad;": u"\u03dc",
    u"Gbreve;": u"\u011e",
    u"Gcedil;": u"\u0122",
    u"Gcirc;": u"\u011c",
    u"Gcy;": u"\u0413",
    u"Gdot;": u"\u0120",
    u"Gfr;": u"\U0001d50a",
    u"Gg;": u"\u22d9",
    u"Gopf;": u"\U0001d53e",
    u"GreaterEqual;": u"\u2265",
    u"GreaterEqualLess;": u"\u22db",
    u"GreaterFullEqual;": u"\u2267",
    u"GreaterGreater;": u"\u2aa2",
    u"GreaterLess;": u"\u2277",
    u"GreaterSlantEqual;": u"\u2a7e",
    u"GreaterTilde;": u"\u2273",
    u"Gscr;": u"\U0001d4a2",
    u"Gt;": u"\u226b",
    u"HARDcy;": u"\u042a",
    u"Hacek;": u"\u02c7",
    u"Hat;": u"^",
    u"Hcirc;": u"\u0124",
    u"Hfr;": u"\u210c",
    u"HilbertSpace;": u"\u210b",
    u"Hopf;": u"\u210d",
    u"HorizontalLine;": u"\u2500",
    u"Hscr;": u"\u210b",
    u"Hstrok;": u"\u0126",
    u"HumpDownHump;": u"\u224e",
    u"HumpEqual;": u"\u224f",
    u"IEcy;": u"\u0415",
    u"IJlig;": u"\u0132",
    u"IOcy;": u"\u0401",
    u"Iacute": u"\xcd",
    u"Iacute;": u"\xcd",
    u"Icirc": u"\xce",
    u"Icirc;": u"\xce",
    u"Icy;": u"\u0418",
    u"Idot;": u"\u0130",
    u"Ifr;": u"\u2111",
    u"Igrave": u"\xcc",
    u"Igrave;": u"\xcc",
    u"Im;": u"\u2111",
    u"Imacr;": u"\u012a",
    u"ImaginaryI;": u"\u2148",
    u"Implies;": u"\u21d2",
    u"Int;": u"\u222c",
    u"Integral;": u"\u222b",
    u"Intersection;": u"\u22c2",
    u"InvisibleComma;": u"\u2063",
    u"InvisibleTimes;": u"\u2062",
    u"Iogon;": u"\u012e",
    u"Iopf;": u"\U0001d540",
    u"Iota;": u"\u0399",
    u"Iscr;": u"\u2110",
    u"Itilde;": u"\u0128",
    u"Iukcy;": u"\u0406",
    u"Iuml": u"\xcf",
    u"Iuml;": u"\xcf",
    u"Jcirc;": u"\u0134",
    u"Jcy;": u"\u0419",
    u"Jfr;": u"\U0001d50d",
    u"Jopf;": u"\U0001d541",
    u"Jscr;": u"\U0001d4a5",
    u"Jsercy;": u"\u0408",
    u"Jukcy;": u"\u0404",
    u"KHcy;": u"\u0425",
    u"KJcy;": u"\u040c",
    u"Kappa;": u"\u039a",
    u"Kcedil;": u"\u0136",
    u"Kcy;": u"\u041a",
    u"Kfr;": u"\U0001d50e",
    u"Kopf;": u"\U0001d542",
    u"Kscr;": u"\U0001d4a6",
    u"LJcy;": u"\u0409",
    u"LT": u"<",
    u"LT;": u"<",
    u"Lacute;": u"\u0139",
    u"Lambda;": u"\u039b",
    u"Lang;": u"\u27ea",
    u"Laplacetrf;": u"\u2112",
    u"Larr;": u"\u219e",
    u"Lcaron;": u"\u013d",
    u"Lcedil;": u"\u013b",
    u"Lcy;": u"\u041b",
    u"LeftAngleBracket;": u"\u27e8",
    u"LeftArrow;": u"\u2190",
    u"LeftArrowBar;": u"\u21e4",
    u"LeftArrowRightArrow;": u"\u21c6",
    u"LeftCeiling;": u"\u2308",
    u"LeftDoubleBracket;": u"\u27e6",
    u"LeftDownTeeVector;": u"\u2961",
    u"LeftDownVector;": u"\u21c3",
    u"LeftDownVectorBar;": u"\u2959",
    u"LeftFloor;": u"\u230a",
    u"LeftRightArrow;": u"\u2194",
    u"LeftRightVector;": u"\u294e",
    u"LeftTee;": u"\u22a3",
    u"LeftTeeArrow;": u"\u21a4",
    u"LeftTeeVector;": u"\u295a",
    u"LeftTriangle;": u"\u22b2",
    u"LeftTriangleBar;": u"\u29cf",
    u"LeftTriangleEqual;": u"\u22b4",
    u"LeftUpDownVector;": u"\u2951",
    u"LeftUpTeeVector;": u"\u2960",
    u"LeftUpVector;": u"\u21bf",
    u"LeftUpVectorBar;": u"\u2958",
    u"LeftVector;": u"\u21bc",
    u"LeftVectorBar;": u"\u2952",
    u"Leftarrow;": u"\u21d0",
    u"Leftrightarrow;": u"\u21d4",
    u"LessEqualGreater;": u"\u22da",
    u"LessFullEqual;": u"\u2266",
    u"LessGreater;": u"\u2276",
    u"LessLess;": u"\u2aa1",
    u"LessSlantEqual;": u"\u2a7d",
    u"LessTilde;": u"\u2272",
    u"Lfr;": u"\U0001d50f",
    u"Ll;": u"\u22d8",
    u"Lleftarrow;": u"\u21da",
    u"Lmidot;": u"\u013f",
    u"LongLeftArrow;": u"\u27f5",
    u"LongLeftRightArrow;": u"\u27f7",
    u"LongRightArrow;": u"\u27f6",
    u"Longleftarrow;": u"\u27f8",
    u"Longleftrightarrow;": u"\u27fa",
    u"Longrightarrow;": u"\u27f9",
    u"Lopf;": u"\U0001d543",
    u"LowerLeftArrow;": u"\u2199",
    u"LowerRightArrow;": u"\u2198",
    u"Lscr;": u"\u2112",
    u"Lsh;": u"\u21b0",
    u"Lstrok;": u"\u0141",
    u"Lt;": u"\u226a",
    u"Map;": u"\u2905",
    u"Mcy;": u"\u041c",
    u"MediumSpace;": u"\u205f",
    u"Mellintrf;": u"\u2133",
    u"Mfr;": u"\U0001d510",
    u"MinusPlus;": u"\u2213",
    u"Mopf;": u"\U0001d544",
    u"Mscr;": u"\u2133",
    u"Mu;": u"\u039c",
    u"NJcy;": u"\u040a",
    u"Nacute;": u"\u0143",
    u"Ncaron;": u"\u0147",
    u"Ncedil;": u"\u0145",
    u"Ncy;": u"\u041d",
    u"NegativeMediumSpace;": u"\u200b",
    u"NegativeThickSpace;": u"\u200b",
    u"NegativeThinSpace;": u"\u200b",
    u"NegativeVeryThinSpace;": u"\u200b",
    u"NestedGreaterGreater;": u"\u226b",
    u"NestedLessLess;": u"\u226a",
    u"NewLine;": u"\n",
    u"Nfr;": u"\U0001d511",
    u"NoBreak;": u"\u2060",
    u"NonBreakingSpace;": u"\xa0",
    u"Nopf;": u"\u2115",
    u"Not;": u"\u2aec",
    u"NotCongruent;": u"\u2262",
    u"NotCupCap;": u"\u226d",
    u"NotDoubleVerticalBar;": u"\u2226",
    u"NotElement;": u"\u2209",
    u"NotEqual;": u"\u2260",
    u"NotEqualTilde;": u"\u2242\u0338",
    u"NotExists;": u"\u2204",
    u"NotGreater;": u"\u226f",
    u"NotGreaterEqual;": u"\u2271",
    u"NotGreaterFullEqual;": u"\u2267\u0338",
    u"NotGreaterGreater;": u"\u226b\u0338",
    u"NotGreaterLess;": u"\u2279",
    u"NotGreaterSlantEqual;": u"\u2a7e\u0338",
    u"NotGreaterTilde;": u"\u2275",
    u"NotHumpDownHump;": u"\u224e\u0338",
    u"NotHumpEqual;": u"\u224f\u0338",
    u"NotLeftTriangle;": u"\u22ea",
    u"NotLeftTriangleBar;": u"\u29cf\u0338",
    u"NotLeftTriangleEqual;": u"\u22ec",
    u"NotLess;": u"\u226e",
    u"NotLessEqual;": u"\u2270",
    u"NotLessGreater;": u"\u2278",
    u"NotLessLess;": u"\u226a\u0338",
    u"NotLessSlantEqual;": u"\u2a7d\u0338",
    u"NotLessTilde;": u"\u2274",
    u"NotNestedGreaterGreater;": u"\u2aa2\u0338",
    u"NotNestedLessLess;": u"\u2aa1\u0338",
    u"NotPrecedes;": u"\u2280",
    u"NotPrecedesEqual;": u"\u2aaf\u0338",
    u"NotPrecedesSlantEqual;": u"\u22e0",
    u"NotReverseElement;": u"\u220c",
    u"NotRightTriangle;": u"\u22eb",
    u"NotRightTriangleBar;": u"\u29d0\u0338",
    u"NotRightTriangleEqual;": u"\u22ed",
    u"NotSquareSubset;": u"\u228f\u0338",
    u"NotSquareSubsetEqual;": u"\u22e2",
    u"NotSquareSuperset;": u"\u2290\u0338",
    u"NotSquareSupersetEqual;": u"\u22e3",
    u"NotSubset;": u"\u2282\u20d2",
    u"NotSubsetEqual;": u"\u2288",
    u"NotSucceeds;": u"\u2281",
    u"NotSucceedsEqual;": u"\u2ab0\u0338",
    u"NotSucceedsSlantEqual;": u"\u22e1",
    u"NotSucceedsTilde;": u"\u227f\u0338",
    u"NotSuperset;": u"\u2283\u20d2",
    u"NotSupersetEqual;": u"\u2289",
    u"NotTilde;": u"\u2241",
    u"NotTildeEqual;": u"\u2244",
    u"NotTildeFullEqual;": u"\u2247",
    u"NotTildeTilde;": u"\u2249",
    u"NotVerticalBar;": u"\u2224",
    u"Nscr;": u"\U0001d4a9",
    u"Ntilde": u"\xd1",
    u"Ntilde;": u"\xd1",
    u"Nu;": u"\u039d",
    u"OElig;": u"\u0152",
    u"Oacute": u"\xd3",
    u"Oacute;": u"\xd3",
    u"Ocirc": u"\xd4",
    u"Ocirc;": u"\xd4",
    u"Ocy;": u"\u041e",
    u"Odblac;": u"\u0150",
    u"Ofr;": u"\U0001d512",
    u"Ograve": u"\xd2",
    u"Ograve;": u"\xd2",
    u"Omacr;": u"\u014c",
    u"Omega;": u"\u03a9",
    u"Omicron;": u"\u039f",
    u"Oopf;": u"\U0001d546",
    u"OpenCurlyDoubleQuote;": u"\u201c",
    u"OpenCurlyQuote;": u"\u2018",
    u"Or;": u"\u2a54",
    u"Oscr;": u"\U0001d4aa",
    u"Oslash": u"\xd8",
    u"Oslash;": u"\xd8",
    u"Otilde": u"\xd5",
    u"Otilde;": u"\xd5",
    u"Otimes;": u"\u2a37",
    u"Ouml": u"\xd6",
    u"Ouml;": u"\xd6",
    u"OverBar;": u"\u203e",
    u"OverBrace;": u"\u23de",
    u"OverBracket;": u"\u23b4",
    u"OverParenthesis;": u"\u23dc",
    u"PartialD;": u"\u2202",
    u"Pcy;": u"\u041f",
    u"Pfr;": u"\U0001d513",
    u"Phi;": u"\u03a6",
    u"Pi;": u"\u03a0",
    u"PlusMinus;": u"\xb1",
    u"Poincareplane;": u"\u210c",
    u"Popf;": u"\u2119",
    u"Pr;": u"\u2abb",
    u"Precedes;": u"\u227a",
    u"PrecedesEqual;": u"\u2aaf",
    u"PrecedesSlantEqual;": u"\u227c",
    u"PrecedesTilde;": u"\u227e",
    u"Prime;": u"\u2033",
    u"Product;": u"\u220f",
    u"Proportion;": u"\u2237",
    u"Proportional;": u"\u221d",
    u"Pscr;": u"\U0001d4ab",
    u"Psi;": u"\u03a8",
    u"QUOT": u"\"",
    u"QUOT;": u"\"",
    u"Qfr;": u"\U0001d514",
    u"Qopf;": u"\u211a",
    u"Qscr;": u"\U0001d4ac",
    u"RBarr;": u"\u2910",
    u"REG": u"\xae",
    u"REG;": u"\xae",
    u"Racute;": u"\u0154",
    u"Rang;": u"\u27eb",
    u"Rarr;": u"\u21a0",
    u"Rarrtl;": u"\u2916",
    u"Rcaron;": u"\u0158",
    u"Rcedil;": u"\u0156",
    u"Rcy;": u"\u0420",
    u"Re;": u"\u211c",
    u"ReverseElement;": u"\u220b",
    u"ReverseEquilibrium;": u"\u21cb",
    u"ReverseUpEquilibrium;": u"\u296f",
    u"Rfr;": u"\u211c",
    u"Rho;": u"\u03a1",
    u"RightAngleBracket;": u"\u27e9",
    u"RightArrow;": u"\u2192",
    u"RightArrowBar;": u"\u21e5",
    u"RightArrowLeftArrow;": u"\u21c4",
    u"RightCeiling;": u"\u2309",
    u"RightDoubleBracket;": u"\u27e7",
    u"RightDownTeeVector;": u"\u295d",
    u"RightDownVector;": u"\u21c2",
    u"RightDownVectorBar;": u"\u2955",
    u"RightFloor;": u"\u230b",
    u"RightTee;": u"\u22a2",
    u"RightTeeArrow;": u"\u21a6",
    u"RightTeeVector;": u"\u295b",
    u"RightTriangle;": u"\u22b3",
    u"RightTriangleBar;": u"\u29d0",
    u"RightTriangleEqual;": u"\u22b5",
    u"RightUpDownVector;": u"\u294f",
    u"RightUpTeeVector;": u"\u295c",
    u"RightUpVector;": u"\u21be",
    u"RightUpVectorBar;": u"\u2954",
    u"RightVector;": u"\u21c0",
    u"RightVectorBar;": u"\u2953",
    u"Rightarrow;": u"\u21d2",
    u"Ropf;": u"\u211d",
    u"RoundImplies;": u"\u2970",
    u"Rrightarrow;": u"\u21db",
    u"Rscr;": u"\u211b",
    u"Rsh;": u"\u21b1",
    u"RuleDelayed;": u"\u29f4",
    u"SHCHcy;": u"\u0429",
    u"SHcy;": u"\u0428",
    u"SOFTcy;": u"\u042c",
    u"Sacute;": u"\u015a",
    u"Sc;": u"\u2abc",
    u"Scaron;": u"\u0160",
    u"Scedil;": u"\u015e",
    u"Scirc;": u"\u015c",
    u"Scy;": u"\u0421",
    u"Sfr;": u"\U0001d516",
    u"ShortDownArrow;": u"\u2193",
    u"ShortLeftArrow;": u"\u2190",
    u"ShortRightArrow;": u"\u2192",
    u"ShortUpArrow;": u"\u2191",
    u"Sigma;": u"\u03a3",
    u"SmallCircle;": u"\u2218",
    u"Sopf;": u"\U0001d54a",
    u"Sqrt;": u"\u221a",
    u"Square;": u"\u25a1",
    u"SquareIntersection;": u"\u2293",
    u"SquareSubset;": u"\u228f",
    u"SquareSubsetEqual;": u"\u2291",
    u"SquareSuperset;": u"\u2290",
    u"SquareSupersetEqual;": u"\u2292",
    u"SquareUnion;": u"\u2294",
    u"Sscr;": u"\U0001d4ae",
    u"Star;": u"\u22c6",
    u"Sub;": u"\u22d0",
    u"Subset;": u"\u22d0",
    u"SubsetEqual;": u"\u2286",
    u"Succeeds;": u"\u227b",
    u"SucceedsEqual;": u"\u2ab0",
    u"SucceedsSlantEqual;": u"\u227d",
    u"SucceedsTilde;": u"\u227f",
    u"SuchThat;": u"\u220b",
    u"Sum;": u"\u2211",
    u"Sup;": u"\u22d1",
    u"Superset;": u"\u2283",
    u"SupersetEqual;": u"\u2287",
    u"Supset;": u"\u22d1",
    u"THORN": u"\xde",
    u"THORN;": u"\xde",
    u"TRADE;": u"\u2122",
    u"TSHcy;": u"\u040b",
    u"TScy;": u"\u0426",
    u"Tab;": u"\t",
    u"Tau;": u"\u03a4",
    u"Tcaron;": u"\u0164",
    u"Tcedil;": u"\u0162",
    u"Tcy;": u"\u0422",
    u"Tfr;": u"\U0001d517",
    u"Therefore;": u"\u2234",
    u"Theta;": u"\u0398",
    u"ThickSpace;": u"\u205f\u200a",
    u"ThinSpace;": u"\u2009",
    u"Tilde;": u"\u223c",
    u"TildeEqual;": u"\u2243",
    u"TildeFullEqual;": u"\u2245",
    u"TildeTilde;": u"\u2248",
    u"Topf;": u"\U0001d54b",
    u"TripleDot;": u"\u20db",
    u"Tscr;": u"\U0001d4af",
    u"Tstrok;": u"\u0166",
    u"Uacute": u"\xda",
    u"Uacute;": u"\xda",
    u"Uarr;": u"\u219f",
    u"Uarrocir;": u"\u2949",
    u"Ubrcy;": u"\u040e",
    u"Ubreve;": u"\u016c",
    u"Ucirc": u"\xdb",
    u"Ucirc;": u"\xdb",
    u"Ucy;": u"\u0423",
    u"Udblac;": u"\u0170",
    u"Ufr;": u"\U0001d518",
    u"Ugrave": u"\xd9",
    u"Ugrave;": u"\xd9",
    u"Umacr;": u"\u016a",
    u"UnderBar;": u"_",
    u"UnderBrace;": u"\u23df",
    u"UnderBracket;": u"\u23b5",
    u"UnderParenthesis;": u"\u23dd",
    u"Union;": u"\u22c3",
    u"UnionPlus;": u"\u228e",
    u"Uogon;": u"\u0172",
    u"Uopf;": u"\U0001d54c",
    u"UpArrow;": u"\u2191",
    u"UpArrowBar;": u"\u2912",
    u"UpArrowDownArrow;": u"\u21c5",
    u"UpDownArrow;": u"\u2195",
    u"UpEquilibrium;": u"\u296e",
    u"UpTee;": u"\u22a5",
    u"UpTeeArrow;": u"\u21a5",
    u"Uparrow;": u"\u21d1",
    u"Updownarrow;": u"\u21d5",
    u"UpperLeftArrow;": u"\u2196",
    u"UpperRightArrow;": u"\u2197",
    u"Upsi;": u"\u03d2",
    u"Upsilon;": u"\u03a5",
    u"Uring;": u"\u016e",
    u"Uscr;": u"\U0001d4b0",
    u"Utilde;": u"\u0168",
    u"Uuml": u"\xdc",
    u"Uuml;": u"\xdc",
    u"VDash;": u"\u22ab",
    u"Vbar;": u"\u2aeb",
    u"Vcy;": u"\u0412",
    u"Vdash;": u"\u22a9",
    u"Vdashl;": u"\u2ae6",
    u"Vee;": u"\u22c1",
    u"Verbar;": u"\u2016",
    u"Vert;": u"\u2016",
    u"VerticalBar;": u"\u2223",
    u"VerticalLine;": u"|",
    u"VerticalSeparator;": u"\u2758",
    u"VerticalTilde;": u"\u2240",
    u"VeryThinSpace;": u"\u200a",
    u"Vfr;": u"\U0001d519",
    u"Vopf;": u"\U0001d54d",
    u"Vscr;": u"\U0001d4b1",
    u"Vvdash;": u"\u22aa",
    u"Wcirc;": u"\u0174",
    u"Wedge;": u"\u22c0",
    u"Wfr;": u"\U0001d51a",
    u"Wopf;": u"\U0001d54e",
    u"Wscr;": u"\U0001d4b2",
    u"Xfr;": u"\U0001d51b",
    u"Xi;": u"\u039e",
    u"Xopf;": u"\U0001d54f",
    u"Xscr;": u"\U0001d4b3",
    u"YAcy;": u"\u042f",
    u"YIcy;": u"\u0407",
    u"YUcy;": u"\u042e",
    u"Yacute": u"\xdd",
    u"Yacute;": u"\xdd",
    u"Ycirc;": u"\u0176",
    u"Ycy;": u"\u042b",
    u"Yfr;": u"\U0001d51c",
    u"Yopf;": u"\U0001d550",
    u"Yscr;": u"\U0001d4b4",
    u"Yuml;": u"\u0178",
    u"ZHcy;": u"\u0416",
    u"Zacute;": u"\u0179",
    u"Zcaron;": u"\u017d",
    u"Zcy;": u"\u0417",
    u"Zdot;": u"\u017b",
    u"ZeroWidthSpace;": u"\u200b",
    u"Zeta;": u"\u0396",
    u"Zfr;": u"\u2128",
    u"Zopf;": u"\u2124",
    u"Zscr;": u"\U0001d4b5",
    u"aacute": u"\xe1",
    u"aacute;": u"\xe1",
    u"abreve;": u"\u0103",
    u"ac;": u"\u223e",
    u"acE;": u"\u223e\u0333",
    u"acd;": u"\u223f",
    u"acirc": u"\xe2",
    u"acirc;": u"\xe2",
    u"acute": u"\xb4",
    u"acute;": u"\xb4",
    u"acy;": u"\u0430",
    u"aelig": u"\xe6",
    u"aelig;": u"\xe6",
    u"af;": u"\u2061",
    u"afr;": u"\U0001d51e",
    u"agrave": u"\xe0",
    u"agrave;": u"\xe0",
    u"alefsym;": u"\u2135",
    u"aleph;": u"\u2135",
    u"alpha;": u"\u03b1",
    u"amacr;": u"\u0101",
    u"amalg;": u"\u2a3f",
    u"amp": u"&",
    u"amp;": u"&",
    u"and;": u"\u2227",
    u"andand;": u"\u2a55",
    u"andd;": u"\u2a5c",
    u"andslope;": u"\u2a58",
    u"andv;": u"\u2a5a",
    u"ang;": u"\u2220",
    u"ange;": u"\u29a4",
    u"angle;": u"\u2220",
    u"angmsd;": u"\u2221",
    u"angmsdaa;": u"\u29a8",
    u"angmsdab;": u"\u29a9",
    u"angmsdac;": u"\u29aa",
    u"angmsdad;": u"\u29ab",
    u"angmsdae;": u"\u29ac",
    u"angmsdaf;": u"\u29ad",
    u"angmsdag;": u"\u29ae",
    u"angmsdah;": u"\u29af",
    u"angrt;": u"\u221f",
    u"angrtvb;": u"\u22be",
    u"angrtvbd;": u"\u299d",
    u"angsph;": u"\u2222",
    u"angst;": u"\xc5",
    u"angzarr;": u"\u237c",
    u"aogon;": u"\u0105",
    u"aopf;": u"\U0001d552",
    u"ap;": u"\u2248",
    u"apE;": u"\u2a70",
    u"apacir;": u"\u2a6f",
    u"ape;": u"\u224a",
    u"apid;": u"\u224b",
    u"apos;": u"'",
    u"approx;": u"\u2248",
    u"approxeq;": u"\u224a",
    u"aring": u"\xe5",
    u"aring;": u"\xe5",
    u"ascr;": u"\U0001d4b6",
    u"ast;": u"*",
    u"asymp;": u"\u2248",
    u"asympeq;": u"\u224d",
    u"atilde": u"\xe3",
    u"atilde;": u"\xe3",
    u"auml": u"\xe4",
    u"auml;": u"\xe4",
    u"awconint;": u"\u2233",
    u"awint;": u"\u2a11",
    u"bNot;": u"\u2aed",
    u"backcong;": u"\u224c",
    u"backepsilon;": u"\u03f6",
    u"backprime;": u"\u2035",
    u"backsim;": u"\u223d",
    u"backsimeq;": u"\u22cd",
    u"barvee;": u"\u22bd",
    u"barwed;": u"\u2305",
    u"barwedge;": u"\u2305",
    u"bbrk;": u"\u23b5",
    u"bbrktbrk;": u"\u23b6",
    u"bcong;": u"\u224c",
    u"bcy;": u"\u0431",
    u"bdquo;": u"\u201e",
    u"becaus;": u"\u2235",
    u"because;": u"\u2235",
    u"bemptyv;": u"\u29b0",
    u"bepsi;": u"\u03f6",
    u"bernou;": u"\u212c",
    u"beta;": u"\u03b2",
    u"beth;": u"\u2136",
    u"between;": u"\u226c",
    u"bfr;": u"\U0001d51f",
    u"bigcap;": u"\u22c2",
    u"bigcirc;": u"\u25ef",
    u"bigcup;": u"\u22c3",
    u"bigodot;": u"\u2a00",
    u"bigoplus;": u"\u2a01",
    u"bigotimes;": u"\u2a02",
    u"bigsqcup;": u"\u2a06",
    u"bigstar;": u"\u2605",
    u"bigtriangledown;": u"\u25bd",
    u"bigtriangleup;": u"\u25b3",
    u"biguplus;": u"\u2a04",
    u"bigvee;": u"\u22c1",
    u"bigwedge;": u"\u22c0",
    u"bkarow;": u"\u290d",
    u"blacklozenge;": u"\u29eb",
    u"blacksquare;": u"\u25aa",
    u"blacktriangle;": u"\u25b4",
    u"blacktriangledown;": u"\u25be",
    u"blacktriangleleft;": u"\u25c2",
    u"blacktriangleright;": u"\u25b8",
    u"blank;": u"\u2423",
    u"blk12;": u"\u2592",
    u"blk14;": u"\u2591",
    u"blk34;": u"\u2593",
    u"block;": u"\u2588",
    u"bne;": u"=\u20e5",
    u"bnequiv;": u"\u2261\u20e5",
    u"bnot;": u"\u2310",
    u"bopf;": u"\U0001d553",
    u"bot;": u"\u22a5",
    u"bottom;": u"\u22a5",
    u"bowtie;": u"\u22c8",
    u"boxDL;": u"\u2557",
    u"boxDR;": u"\u2554",
    u"boxDl;": u"\u2556",
    u"boxDr;": u"\u2553",
    u"boxH;": u"\u2550",
    u"boxHD;": u"\u2566",
    u"boxHU;": u"\u2569",
    u"boxHd;": u"\u2564",
    u"boxHu;": u"\u2567",
    u"boxUL;": u"\u255d",
    u"boxUR;": u"\u255a",
    u"boxUl;": u"\u255c",
    u"boxUr;": u"\u2559",
    u"boxV;": u"\u2551",
    u"boxVH;": u"\u256c",
    u"boxVL;": u"\u2563",
    u"boxVR;": u"\u2560",
    u"boxVh;": u"\u256b",
    u"boxVl;": u"\u2562",
    u"boxVr;": u"\u255f",
    u"boxbox;": u"\u29c9",
    u"boxdL;": u"\u2555",
    u"boxdR;": u"\u2552",
    u"boxdl;": u"\u2510",
    u"boxdr;": u"\u250c",
    u"boxh;": u"\u2500",
    u"boxhD;": u"\u2565",
    u"boxhU;": u"\u2568",
    u"boxhd;": u"\u252c",
    u"boxhu;": u"\u2534",
    u"boxminus;": u"\u229f",
    u"boxplus;": u"\u229e",
    u"boxtimes;": u"\u22a0",
    u"boxuL;": u"\u255b",
    u"boxuR;": u"\u2558",
    u"boxul;": u"\u2518",
    u"boxur;": u"\u2514",
    u"boxv;": u"\u2502",
    u"boxvH;": u"\u256a",
    u"boxvL;": u"\u2561",
    u"boxvR;": u"\u255e",
    u"boxvh;": u"\u253c",
    u"boxvl;": u"\u2524",
    u"boxvr;": u"\u251c",
    u"bprime;": u"\u2035",
    u"breve;": u"\u02d8",
    u"brvbar": u"\xa6",
    u"brvbar;": u"\xa6",
    u"bscr;": u"\U0001d4b7",
    u"bsemi;": u"\u204f",
    u"bsim;": u"\u223d",
    u"bsime;": u"\u22cd",
    u"bsol;": u"\\",
    u"bsolb;": u"\u29c5",
    u"bsolhsub;": u"\u27c8",
    u"bull;": u"\u2022",
    u"bullet;": u"\u2022",
    u"bump;": u"\u224e",
    u"bumpE;": u"\u2aae",
    u"bumpe;": u"\u224f",
    u"bumpeq;": u"\u224f",
    u"cacute;": u"\u0107",
    u"cap;": u"\u2229",
    u"capand;": u"\u2a44",
    u"capbrcup;": u"\u2a49",
    u"capcap;": u"\u2a4b",
    u"capcup;": u"\u2a47",
    u"capdot;": u"\u2a40",
    u"caps;": u"\u2229\ufe00",
    u"caret;": u"\u2041",
    u"caron;": u"\u02c7",
    u"ccaps;": u"\u2a4d",
    u"ccaron;": u"\u010d",
    u"ccedil": u"\xe7",
    u"ccedil;": u"\xe7",
    u"ccirc;": u"\u0109",
    u"ccups;": u"\u2a4c",
    u"ccupssm;": u"\u2a50",
    u"cdot;": u"\u010b",
    u"cedil": u"\xb8",
    u"cedil;": u"\xb8",
    u"cemptyv;": u"\u29b2",
    u"cent": u"\xa2",
    u"cent;": u"\xa2",
    u"centerdot;": u"\xb7",
    u"cfr;": u"\U0001d520",
    u"chcy;": u"\u0447",
    u"check;": u"\u2713",
    u"checkmark;": u"\u2713",
    u"chi;": u"\u03c7",
    u"cir;": u"\u25cb",
    u"cirE;": u"\u29c3",
    u"circ;": u"\u02c6",
    u"circeq;": u"\u2257",
    u"circlearrowleft;": u"\u21ba",
    u"circlearrowright;": u"\u21bb",
    u"circledR;": u"\xae",
    u"circledS;": u"\u24c8",
    u"circledast;": u"\u229b",
    u"circledcirc;": u"\u229a",
    u"circleddash;": u"\u229d",
    u"cire;": u"\u2257",
    u"cirfnint;": u"\u2a10",
    u"cirmid;": u"\u2aef",
    u"cirscir;": u"\u29c2",
    u"clubs;": u"\u2663",
    u"clubsuit;": u"\u2663",
    u"colon;": u":",
    u"colone;": u"\u2254",
    u"coloneq;": u"\u2254",
    u"comma;": u",",
    u"commat;": u"@",
    u"comp;": u"\u2201",
    u"compfn;": u"\u2218",
    u"complement;": u"\u2201",
    u"complexes;": u"\u2102",
    u"cong;": u"\u2245",
    u"congdot;": u"\u2a6d",
    u"conint;": u"\u222e",
    u"copf;": u"\U0001d554",
    u"coprod;": u"\u2210",
    u"copy": u"\xa9",
    u"copy;": u"\xa9",
    u"copysr;": u"\u2117",
    u"crarr;": u"\u21b5",
    u"cross;": u"\u2717",
    u"cscr;": u"\U0001d4b8",
    u"csub;": u"\u2acf",
    u"csube;": u"\u2ad1",
    u"csup;": u"\u2ad0",
    u"csupe;": u"\u2ad2",
    u"ctdot;": u"\u22ef",
    u"cudarrl;": u"\u2938",
    u"cudarrr;": u"\u2935",
    u"cuepr;": u"\u22de",
    u"cuesc;": u"\u22df",
    u"cularr;": u"\u21b6",
    u"cularrp;": u"\u293d",
    u"cup;": u"\u222a",
    u"cupbrcap;": u"\u2a48",
    u"cupcap;": u"\u2a46",
    u"cupcup;": u"\u2a4a",
    u"cupdot;": u"\u228d",
    u"cupor;": u"\u2a45",
    u"cups;": u"\u222a\ufe00",
    u"curarr;": u"\u21b7",
    u"curarrm;": u"\u293c",
    u"curlyeqprec;": u"\u22de",
    u"curlyeqsucc;": u"\u22df",
    u"curlyvee;": u"\u22ce",
    u"curlywedge;": u"\u22cf",
    u"curren": u"\xa4",
    u"curren;": u"\xa4",
    u"curvearrowleft;": u"\u21b6",
    u"curvearrowright;": u"\u21b7",
    u"cuvee;": u"\u22ce",
    u"cuwed;": u"\u22cf",
    u"cwconint;": u"\u2232",
    u"cwint;": u"\u2231",
    u"cylcty;": u"\u232d",
    u"dArr;": u"\u21d3",
    u"dHar;": u"\u2965",
    u"dagger;": u"\u2020",
    u"daleth;": u"\u2138",
    u"darr;": u"\u2193",
    u"dash;": u"\u2010",
    u"dashv;": u"\u22a3",
    u"dbkarow;": u"\u290f",
    u"dblac;": u"\u02dd",
    u"dcaron;": u"\u010f",
    u"dcy;": u"\u0434",
    u"dd;": u"\u2146",
    u"ddagger;": u"\u2021",
    u"ddarr;": u"\u21ca",
    u"ddotseq;": u"\u2a77",
    u"deg": u"\xb0",
    u"deg;": u"\xb0",
    u"delta;": u"\u03b4",
    u"demptyv;": u"\u29b1",
    u"dfisht;": u"\u297f",
    u"dfr;": u"\U0001d521",
    u"dharl;": u"\u21c3",
    u"dharr;": u"\u21c2",
    u"diam;": u"\u22c4",
    u"diamond;": u"\u22c4",
    u"diamondsuit;": u"\u2666",
    u"diams;": u"\u2666",
    u"die;": u"\xa8",
    u"digamma;": u"\u03dd",
    u"disin;": u"\u22f2",
    u"div;": u"\xf7",
    u"divide": u"\xf7",
    u"divide;": u"\xf7",
    u"divideontimes;": u"\u22c7",
    u"divonx;": u"\u22c7",
    u"djcy;": u"\u0452",
    u"dlcorn;": u"\u231e",
    u"dlcrop;": u"\u230d",
    u"dollar;": u"$",
    u"dopf;": u"\U0001d555",
    u"dot;": u"\u02d9",
    u"doteq;": u"\u2250",
    u"doteqdot;": u"\u2251",
    u"dotminus;": u"\u2238",
    u"dotplus;": u"\u2214",
    u"dotsquare;": u"\u22a1",
    u"doublebarwedge;": u"\u2306",
    u"downarrow;": u"\u2193",
    u"downdownarrows;": u"\u21ca",
    u"downharpoonleft;": u"\u21c3",
    u"downharpoonright;": u"\u21c2",
    u"drbkarow;": u"\u2910",
    u"drcorn;": u"\u231f",
    u"drcrop;": u"\u230c",
    u"dscr;": u"\U0001d4b9",
    u"dscy;": u"\u0455",
    u"dsol;": u"\u29f6",
    u"dstrok;": u"\u0111",
    u"dtdot;": u"\u22f1",
    u"dtri;": u"\u25bf",
    u"dtrif;": u"\u25be",
    u"duarr;": u"\u21f5",
    u"duhar;": u"\u296f",
    u"dwangle;": u"\u29a6",
    u"dzcy;": u"\u045f",
    u"dzigrarr;": u"\u27ff",
    u"eDDot;": u"\u2a77",
    u"eDot;": u"\u2251",
    u"eacute": u"\xe9",
    u"eacute;": u"\xe9",
    u"easter;": u"\u2a6e",
    u"ecaron;": u"\u011b",
    u"ecir;": u"\u2256",
    u"ecirc": u"\xea",
    u"ecirc;": u"\xea",
    u"ecolon;": u"\u2255",
    u"ecy;": u"\u044d",
    u"edot;": u"\u0117",
    u"ee;": u"\u2147",
    u"efDot;": u"\u2252",
    u"efr;": u"\U0001d522",
    u"eg;": u"\u2a9a",
    u"egrave": u"\xe8",
    u"egrave;": u"\xe8",
    u"egs;": u"\u2a96",
    u"egsdot;": u"\u2a98",
    u"el;": u"\u2a99",
    u"elinters;": u"\u23e7",
    u"ell;": u"\u2113",
    u"els;": u"\u2a95",
    u"elsdot;": u"\u2a97",
    u"emacr;": u"\u0113",
    u"empty;": u"\u2205",
    u"emptyset;": u"\u2205",
    u"emptyv;": u"\u2205",
    u"emsp13;": u"\u2004",
    u"emsp14;": u"\u2005",
    u"emsp;": u"\u2003",
    u"eng;": u"\u014b",
    u"ensp;": u"\u2002",
    u"eogon;": u"\u0119",
    u"eopf;": u"\U0001d556",
    u"epar;": u"\u22d5",
    u"eparsl;": u"\u29e3",
    u"eplus;": u"\u2a71",
    u"epsi;": u"\u03b5",
    u"epsilon;": u"\u03b5",
    u"epsiv;": u"\u03f5",
    u"eqcirc;": u"\u2256",
    u"eqcolon;": u"\u2255",
    u"eqsim;": u"\u2242",
    u"eqslantgtr;": u"\u2a96",
    u"eqslantless;": u"\u2a95",
    u"equals;": u"=",
    u"equest;": u"\u225f",
    u"equiv;": u"\u2261",
    u"equivDD;": u"\u2a78",
    u"eqvparsl;": u"\u29e5",
    u"erDot;": u"\u2253",
    u"erarr;": u"\u2971",
    u"escr;": u"\u212f",
    u"esdot;": u"\u2250",
    u"esim;": u"\u2242",
    u"eta;": u"\u03b7",
    u"eth": u"\xf0",
    u"eth;": u"\xf0",
    u"euml": u"\xeb",
    u"euml;": u"\xeb",
    u"euro;": u"\u20ac",
    u"excl;": u"!",
    u"exist;": u"\u2203",
    u"expectation;": u"\u2130",
    u"exponentiale;": u"\u2147",
    u"fallingdotseq;": u"\u2252",
    u"fcy;": u"\u0444",
    u"female;": u"\u2640",
    u"ffilig;": u"\ufb03",
    u"fflig;": u"\ufb00",
    u"ffllig;": u"\ufb04",
    u"ffr;": u"\U0001d523",
    u"filig;": u"\ufb01",
    u"fjlig;": u"fj",
    u"flat;": u"\u266d",
    u"fllig;": u"\ufb02",
    u"fltns;": u"\u25b1",
    u"fnof;": u"\u0192",
    u"fopf;": u"\U0001d557",
    u"forall;": u"\u2200",
    u"fork;": u"\u22d4",
    u"forkv;": u"\u2ad9",
    u"fpartint;": u"\u2a0d",
    u"frac12": u"\xbd",
    u"frac12;": u"\xbd",
    u"frac13;": u"\u2153",
    u"frac14": u"\xbc",
    u"frac14;": u"\xbc",
    u"frac15;": u"\u2155",
    u"frac16;": u"\u2159",
    u"frac18;": u"\u215b",
    u"frac23;": u"\u2154",
    u"frac25;": u"\u2156",
    u"frac34": u"\xbe",
    u"frac34;": u"\xbe",
    u"frac35;": u"\u2157",
    u"frac38;": u"\u215c",
    u"frac45;": u"\u2158",
    u"frac56;": u"\u215a",
    u"frac58;": u"\u215d",
    u"frac78;": u"\u215e",
    u"frasl;": u"\u2044",
    u"frown;": u"\u2322",
    u"fscr;": u"\U0001d4bb",
    u"gE;": u"\u2267",
    u"gEl;": u"\u2a8c",
    u"gacute;": u"\u01f5",
    u"gamma;": u"\u03b3",
    u"gammad;": u"\u03dd",
    u"gap;": u"\u2a86",
    u"gbreve;": u"\u011f",
    u"gcirc;": u"\u011d",
    u"gcy;": u"\u0433",
    u"gdot;": u"\u0121",
    u"ge;": u"\u2265",
    u"gel;": u"\u22db",
    u"geq;": u"\u2265",
    u"geqq;": u"\u2267",
    u"geqslant;": u"\u2a7e",
    u"ges;": u"\u2a7e",
    u"gescc;": u"\u2aa9",
    u"gesdot;": u"\u2a80",
    u"gesdoto;": u"\u2a82",
    u"gesdotol;": u"\u2a84",
    u"gesl;": u"\u22db\ufe00",
    u"gesles;": u"\u2a94",
    u"gfr;": u"\U0001d524",
    u"gg;": u"\u226b",
    u"ggg;": u"\u22d9",
    u"gimel;": u"\u2137",
    u"gjcy;": u"\u0453",
    u"gl;": u"\u2277",
    u"glE;": u"\u2a92",
    u"gla;": u"\u2aa5",
    u"glj;": u"\u2aa4",
    u"gnE;": u"\u2269",
    u"gnap;": u"\u2a8a",
    u"gnapprox;": u"\u2a8a",
    u"gne;": u"\u2a88",
    u"gneq;": u"\u2a88",
    u"gneqq;": u"\u2269",
    u"gnsim;": u"\u22e7",
    u"gopf;": u"\U0001d558",
    u"grave;": u"`",
    u"gscr;": u"\u210a",
    u"gsim;": u"\u2273",
    u"gsime;": u"\u2a8e",
    u"gsiml;": u"\u2a90",
    u"gt": u">",
    u"gt;": u">",
    u"gtcc;": u"\u2aa7",
    u"gtcir;": u"\u2a7a",
    u"gtdot;": u"\u22d7",
    u"gtlPar;": u"\u2995",
    u"gtquest;": u"\u2a7c",
    u"gtrapprox;": u"\u2a86",
    u"gtrarr;": u"\u2978",
    u"gtrdot;": u"\u22d7",
    u"gtreqless;": u"\u22db",
    u"gtreqqless;": u"\u2a8c",
    u"gtrless;": u"\u2277",
    u"gtrsim;": u"\u2273",
    u"gvertneqq;": u"\u2269\ufe00",
    u"gvnE;": u"\u2269\ufe00",
    u"hArr;": u"\u21d4",
    u"hairsp;": u"\u200a",
    u"half;": u"\xbd",
    u"hamilt;": u"\u210b",
    u"hardcy;": u"\u044a",
    u"harr;": u"\u2194",
    u"harrcir;": u"\u2948",
    u"harrw;": u"\u21ad",
    u"hbar;": u"\u210f",
    u"hcirc;": u"\u0125",
    u"hearts;": u"\u2665",
    u"heartsuit;": u"\u2665",
    u"hellip;": u"\u2026",
    u"hercon;": u"\u22b9",
    u"hfr;": u"\U0001d525",
    u"hksearow;": u"\u2925",
    u"hkswarow;": u"\u2926",
    u"hoarr;": u"\u21ff",
    u"homtht;": u"\u223b",
    u"hookleftarrow;": u"\u21a9",
    u"hookrightarrow;": u"\u21aa",
    u"hopf;": u"\U0001d559",
    u"horbar;": u"\u2015",
    u"hscr;": u"\U0001d4bd",
    u"hslash;": u"\u210f",
    u"hstrok;": u"\u0127",
    u"hybull;": u"\u2043",
    u"hyphen;": u"\u2010",
    u"iacute": u"\xed",
    u"iacute;": u"\xed",
    u"ic;": u"\u2063",
    u"icirc": u"\xee",
    u"icirc;": u"\xee",
    u"icy;": u"\u0438",
    u"iecy;": u"\u0435",
    u"iexcl": u"\xa1",
    u"iexcl;": u"\xa1",
    u"iff;": u"\u21d4",
    u"ifr;": u"\U0001d526",
    u"igrave": u"\xec",
    u"igrave;": u"\xec",
    u"ii;": u"\u2148",
    u"iiiint;": u"\u2a0c",
    u"iiint;": u"\u222d",
    u"iinfin;": u"\u29dc",
    u"iiota;": u"\u2129",
    u"ijlig;": u"\u0133",
    u"imacr;": u"\u012b",
    u"image;": u"\u2111",
    u"imagline;": u"\u2110",
    u"imagpart;": u"\u2111",
    u"imath;": u"\u0131",
    u"imof;": u"\u22b7",
    u"imped;": u"\u01b5",
    u"in;": u"\u2208",
    u"incare;": u"\u2105",
    u"infin;": u"\u221e",
    u"infintie;": u"\u29dd",
    u"inodot;": u"\u0131",
    u"int;": u"\u222b",
    u"intcal;": u"\u22ba",
    u"integers;": u"\u2124",
    u"intercal;": u"\u22ba",
    u"intlarhk;": u"\u2a17",
    u"intprod;": u"\u2a3c",
    u"iocy;": u"\u0451",
    u"iogon;": u"\u012f",
    u"iopf;": u"\U0001d55a",
    u"iota;": u"\u03b9",
    u"iprod;": u"\u2a3c",
    u"iquest": u"\xbf",
    u"iquest;": u"\xbf",
    u"iscr;": u"\U0001d4be",
    u"isin;": u"\u2208",
    u"isinE;": u"\u22f9",
    u"isindot;": u"\u22f5",
    u"isins;": u"\u22f4",
    u"isinsv;": u"\u22f3",
    u"isinv;": u"\u2208",
    u"it;": u"\u2062",
    u"itilde;": u"\u0129",
    u"iukcy;": u"\u0456",
    u"iuml": u"\xef",
    u"iuml;": u"\xef",
    u"jcirc;": u"\u0135",
    u"jcy;": u"\u0439",
    u"jfr;": u"\U0001d527",
    u"jmath;": u"\u0237",
    u"jopf;": u"\U0001d55b",
    u"jscr;": u"\U0001d4bf",
    u"jsercy;": u"\u0458",
    u"jukcy;": u"\u0454",
    u"kappa;": u"\u03ba",
    u"kappav;": u"\u03f0",
    u"kcedil;": u"\u0137",
    u"kcy;": u"\u043a",
    u"kfr;": u"\U0001d528",
    u"kgreen;": u"\u0138",
    u"khcy;": u"\u0445",
    u"kjcy;": u"\u045c",
    u"kopf;": u"\U0001d55c",
    u"kscr;": u"\U0001d4c0",
    u"lAarr;": u"\u21da",
    u"lArr;": u"\u21d0",
    u"lAtail;": u"\u291b",
    u"lBarr;": u"\u290e",
    u"lE;": u"\u2266",
    u"lEg;": u"\u2a8b",
    u"lHar;": u"\u2962",
    u"lacute;": u"\u013a",
    u"laemptyv;": u"\u29b4",
    u"lagran;": u"\u2112",
    u"lambda;": u"\u03bb",
    u"lang;": u"\u27e8",
    u"langd;": u"\u2991",
    u"langle;": u"\u27e8",
    u"lap;": u"\u2a85",
    u"laquo": u"\xab",
    u"laquo;": u"\xab",
    u"larr;": u"\u2190",
    u"larrb;": u"\u21e4",
    u"larrbfs;": u"\u291f",
    u"larrfs;": u"\u291d",
    u"larrhk;": u"\u21a9",
    u"larrlp;": u"\u21ab",
    u"larrpl;": u"\u2939",
    u"larrsim;": u"\u2973",
    u"larrtl;": u"\u21a2",
    u"lat;": u"\u2aab",
    u"latail;": u"\u2919",
    u"late;": u"\u2aad",
    u"lates;": u"\u2aad\ufe00",
    u"lbarr;": u"\u290c",
    u"lbbrk;": u"\u2772",
    u"lbrace;": u"{",
    u"lbrack;": u"[",
    u"lbrke;": u"\u298b",
    u"lbrksld;": u"\u298f",
    u"lbrkslu;": u"\u298d",
    u"lcaron;": u"\u013e",
    u"lcedil;": u"\u013c",
    u"lceil;": u"\u2308",
    u"lcub;": u"{",
    u"lcy;": u"\u043b",
    u"ldca;": u"\u2936",
    u"ldquo;": u"\u201c",
    u"ldquor;": u"\u201e",
    u"ldrdhar;": u"\u2967",
    u"ldrushar;": u"\u294b",
    u"ldsh;": u"\u21b2",
    u"le;": u"\u2264",
    u"leftarrow;": u"\u2190",
    u"leftarrowtail;": u"\u21a2",
    u"leftharpoondown;": u"\u21bd",
    u"leftharpoonup;": u"\u21bc",
    u"leftleftarrows;": u"\u21c7",
    u"leftrightarrow;": u"\u2194",
    u"leftrightarrows;": u"\u21c6",
    u"leftrightharpoons;": u"\u21cb",
    u"leftrightsquigarrow;": u"\u21ad",
    u"leftthreetimes;": u"\u22cb",
    u"leg;": u"\u22da",
    u"leq;": u"\u2264",
    u"leqq;": u"\u2266",
    u"leqslant;": u"\u2a7d",
    u"les;": u"\u2a7d",
    u"lescc;": u"\u2aa8",
    u"lesdot;": u"\u2a7f",
    u"lesdoto;": u"\u2a81",
    u"lesdotor;": u"\u2a83",
    u"lesg;": u"\u22da\ufe00",
    u"lesges;": u"\u2a93",
    u"lessapprox;": u"\u2a85",
    u"lessdot;": u"\u22d6",
    u"lesseqgtr;": u"\u22da",
    u"lesseqqgtr;": u"\u2a8b",
    u"lessgtr;": u"\u2276",
    u"lesssim;": u"\u2272",
    u"lfisht;": u"\u297c",
    u"lfloor;": u"\u230a",
    u"lfr;": u"\U0001d529",
    u"lg;": u"\u2276",
    u"lgE;": u"\u2a91",
    u"lhard;": u"\u21bd",
    u"lharu;": u"\u21bc",
    u"lharul;": u"\u296a",
    u"lhblk;": u"\u2584",
    u"ljcy;": u"\u0459",
    u"ll;": u"\u226a",
    u"llarr;": u"\u21c7",
    u"llcorner;": u"\u231e",
    u"llhard;": u"\u296b",
    u"lltri;": u"\u25fa",
    u"lmidot;": u"\u0140",
    u"lmoust;": u"\u23b0",
    u"lmoustache;": u"\u23b0",
    u"lnE;": u"\u2268",
    u"lnap;": u"\u2a89",
    u"lnapprox;": u"\u2a89",
    u"lne;": u"\u2a87",
    u"lneq;": u"\u2a87",
    u"lneqq;": u"\u2268",
    u"lnsim;": u"\u22e6",
    u"loang;": u"\u27ec",
    u"loarr;": u"\u21fd",
    u"lobrk;": u"\u27e6",
    u"longleftarrow;": u"\u27f5",
    u"longleftrightarrow;": u"\u27f7",
    u"longmapsto;": u"\u27fc",
    u"longrightarrow;": u"\u27f6",
    u"looparrowleft;": u"\u21ab",
    u"looparrowright;": u"\u21ac",
    u"lopar;": u"\u2985",
    u"lopf;": u"\U0001d55d",
    u"loplus;": u"\u2a2d",
    u"lotimes;": u"\u2a34",
    u"lowast;": u"\u2217",
    u"lowbar;": u"_",
    u"loz;": u"\u25ca",
    u"lozenge;": u"\u25ca",
    u"lozf;": u"\u29eb",
    u"lpar;": u"(",
    u"lparlt;": u"\u2993",
    u"lrarr;": u"\u21c6",
    u"lrcorner;": u"\u231f",
    u"lrhar;": u"\u21cb",
    u"lrhard;": u"\u296d",
    u"lrm;": u"\u200e",
    u"lrtri;": u"\u22bf",
    u"lsaquo;": u"\u2039",
    u"lscr;": u"\U0001d4c1",
    u"lsh;": u"\u21b0",
    u"lsim;": u"\u2272",
    u"lsime;": u"\u2a8d",
    u"lsimg;": u"\u2a8f",
    u"lsqb;": u"[",
    u"lsquo;": u"\u2018",
    u"lsquor;": u"\u201a",
    u"lstrok;": u"\u0142",
    u"lt": u"<",
    u"lt;": u"<",
    u"ltcc;": u"\u2aa6",
    u"ltcir;": u"\u2a79",
    u"ltdot;": u"\u22d6",
    u"lthree;": u"\u22cb",
    u"ltimes;": u"\u22c9",
    u"ltlarr;": u"\u2976",
    u"ltquest;": u"\u2a7b",
    u"ltrPar;": u"\u2996",
    u"ltri;": u"\u25c3",
    u"ltrie;": u"\u22b4",
    u"ltrif;": u"\u25c2",
    u"lurdshar;": u"\u294a",
    u"luruhar;": u"\u2966",
    u"lvertneqq;": u"\u2268\ufe00",
    u"lvnE;": u"\u2268\ufe00",
    u"mDDot;": u"\u223a",
    u"macr": u"\xaf",
    u"macr;": u"\xaf",
    u"male;": u"\u2642",
    u"malt;": u"\u2720",
    u"maltese;": u"\u2720",
    u"map;": u"\u21a6",
    u"mapsto;": u"\u21a6",
    u"mapstodown;": u"\u21a7",
    u"mapstoleft;": u"\u21a4",
    u"mapstoup;": u"\u21a5",
    u"marker;": u"\u25ae",
    u"mcomma;": u"\u2a29",
    u"mcy;": u"\u043c",
    u"mdash;": u"\u2014",
    u"measuredangle;": u"\u2221",
    u"mfr;": u"\U0001d52a",
    u"mho;": u"\u2127",
    u"micro": u"\xb5",
    u"micro;": u"\xb5",
    u"mid;": u"\u2223",
    u"midast;": u"*",
    u"midcir;": u"\u2af0",
    u"middot": u"\xb7",
    u"middot;": u"\xb7",
    u"minus;": u"\u2212",
    u"minusb;": u"\u229f",
    u"minusd;": u"\u2238",
    u"minusdu;": u"\u2a2a",
    u"mlcp;": u"\u2adb",
    u"mldr;": u"\u2026",
    u"mnplus;": u"\u2213",
    u"models;": u"\u22a7",
    u"mopf;": u"\U0001d55e",
    u"mp;": u"\u2213",
    u"mscr;": u"\U0001d4c2",
    u"mstpos;": u"\u223e",
    u"mu;": u"\u03bc",
    u"multimap;": u"\u22b8",
    u"mumap;": u"\u22b8",
    u"nGg;": u"\u22d9\u0338",
    u"nGt;": u"\u226b\u20d2",
    u"nGtv;": u"\u226b\u0338",
    u"nLeftarrow;": u"\u21cd",
    u"nLeftrightarrow;": u"\u21ce",
    u"nLl;": u"\u22d8\u0338",
    u"nLt;": u"\u226a\u20d2",
    u"nLtv;": u"\u226a\u0338",
    u"nRightarrow;": u"\u21cf",
    u"nVDash;": u"\u22af",
    u"nVdash;": u"\u22ae",
    u"nabla;": u"\u2207",
    u"nacute;": u"\u0144",
    u"nang;": u"\u2220\u20d2",
    u"nap;": u"\u2249",
    u"napE;": u"\u2a70\u0338",
    u"napid;": u"\u224b\u0338",
    u"napos;": u"\u0149",
    u"napprox;": u"\u2249",
    u"natur;": u"\u266e",
    u"natural;": u"\u266e",
    u"naturals;": u"\u2115",
    u"nbsp": u"\xa0",
    u"nbsp;": u"\xa0",
    u"nbump;": u"\u224e\u0338",
    u"nbumpe;": u"\u224f\u0338",
    u"ncap;": u"\u2a43",
    u"ncaron;": u"\u0148",
    u"ncedil;": u"\u0146",
    u"ncong;": u"\u2247",
    u"ncongdot;": u"\u2a6d\u0338",
    u"ncup;": u"\u2a42",
    u"ncy;": u"\u043d",
    u"ndash;": u"\u2013",
    u"ne;": u"\u2260",
    u"neArr;": u"\u21d7",
    u"nearhk;": u"\u2924",
    u"nearr;": u"\u2197",
    u"nearrow;": u"\u2197",
    u"nedot;": u"\u2250\u0338",
    u"nequiv;": u"\u2262",
    u"nesear;": u"\u2928",
    u"nesim;": u"\u2242\u0338",
    u"nexist;": u"\u2204",
    u"nexists;": u"\u2204",
    u"nfr;": u"\U0001d52b",
    u"ngE;": u"\u2267\u0338",
    u"nge;": u"\u2271",
    u"ngeq;": u"\u2271",
    u"ngeqq;": u"\u2267\u0338",
    u"ngeqslant;": u"\u2a7e\u0338",
    u"nges;": u"\u2a7e\u0338",
    u"ngsim;": u"\u2275",
    u"ngt;": u"\u226f",
    u"ngtr;": u"\u226f",
    u"nhArr;": u"\u21ce",
    u"nharr;": u"\u21ae",
    u"nhpar;": u"\u2af2",
    u"ni;": u"\u220b",
    u"nis;": u"\u22fc",
    u"nisd;": u"\u22fa",
    u"niv;": u"\u220b",
    u"njcy;": u"\u045a",
    u"nlArr;": u"\u21cd",
    u"nlE;": u"\u2266\u0338",
    u"nlarr;": u"\u219a",
    u"nldr;": u"\u2025",
    u"nle;": u"\u2270",
    u"nleftarrow;": u"\u219a",
    u"nleftrightarrow;": u"\u21ae",
    u"nleq;": u"\u2270",
    u"nleqq;": u"\u2266\u0338",
    u"nleqslant;": u"\u2a7d\u0338",
    u"nles;": u"\u2a7d\u0338",
    u"nless;": u"\u226e",
    u"nlsim;": u"\u2274",
    u"nlt;": u"\u226e",
    u"nltri;": u"\u22ea",
    u"nltrie;": u"\u22ec",
    u"nmid;": u"\u2224",
    u"nopf;": u"\U0001d55f",
    u"not": u"\xac",
    u"not;": u"\xac",
    u"notin;": u"\u2209",
    u"notinE;": u"\u22f9\u0338",
    u"notindot;": u"\u22f5\u0338",
    u"notinva;": u"\u2209",
    u"notinvb;": u"\u22f7",
    u"notinvc;": u"\u22f6",
    u"notni;": u"\u220c",
    u"notniva;": u"\u220c",
    u"notnivb;": u"\u22fe",
    u"notnivc;": u"\u22fd",
    u"npar;": u"\u2226",
    u"nparallel;": u"\u2226",
    u"nparsl;": u"\u2afd\u20e5",
    u"npart;": u"\u2202\u0338",
    u"npolint;": u"\u2a14",
    u"npr;": u"\u2280",
    u"nprcue;": u"\u22e0",
    u"npre;": u"\u2aaf\u0338",
    u"nprec;": u"\u2280",
    u"npreceq;": u"\u2aaf\u0338",
    u"nrArr;": u"\u21cf",
    u"nrarr;": u"\u219b",
    u"nrarrc;": u"\u2933\u0338",
    u"nrarrw;": u"\u219d\u0338",
    u"nrightarrow;": u"\u219b",
    u"nrtri;": u"\u22eb",
    u"nrtrie;": u"\u22ed",
    u"nsc;": u"\u2281",
    u"nsccue;": u"\u22e1",
    u"nsce;": u"\u2ab0\u0338",
    u"nscr;": u"\U0001d4c3",
    u"nshortmid;": u"\u2224",
    u"nshortparallel;": u"\u2226",
    u"nsim;": u"\u2241",
    u"nsime;": u"\u2244",
    u"nsimeq;": u"\u2244",
    u"nsmid;": u"\u2224",
    u"nspar;": u"\u2226",
    u"nsqsube;": u"\u22e2",
    u"nsqsupe;": u"\u22e3",
    u"nsub;": u"\u2284",
    u"nsubE;": u"\u2ac5\u0338",
    u"nsube;": u"\u2288",
    u"nsubset;": u"\u2282\u20d2",
    u"nsubseteq;": u"\u2288",
    u"nsubseteqq;": u"\u2ac5\u0338",
    u"nsucc;": u"\u2281",
    u"nsucceq;": u"\u2ab0\u0338",
    u"nsup;": u"\u2285",
    u"nsupE;": u"\u2ac6\u0338",
    u"nsupe;": u"\u2289",
    u"nsupset;": u"\u2283\u20d2",
    u"nsupseteq;": u"\u2289",
    u"nsupseteqq;": u"\u2ac6\u0338",
    u"ntgl;": u"\u2279",
    u"ntilde": u"\xf1",
    u"ntilde;": u"\xf1",
    u"ntlg;": u"\u2278",
    u"ntriangleleft;": u"\u22ea",
    u"ntrianglelefteq;": u"\u22ec",
    u"ntriangleright;": u"\u22eb",
    u"ntrianglerighteq;": u"\u22ed",
    u"nu;": u"\u03bd",
    u"num;": u"#",
    u"numero;": u"\u2116",
    u"numsp;": u"\u2007",
    u"nvDash;": u"\u22ad",
    u"nvHarr;": u"\u2904",
    u"nvap;": u"\u224d\u20d2",
    u"nvdash;": u"\u22ac",
    u"nvge;": u"\u2265\u20d2",
    u"nvgt;": u">\u20d2",
    u"nvinfin;": u"\u29de",
    u"nvlArr;": u"\u2902",
    u"nvle;": u"\u2264\u20d2",
    u"nvlt;": u"<\u20d2",
    u"nvltrie;": u"\u22b4\u20d2",
    u"nvrArr;": u"\u2903",
    u"nvrtrie;": u"\u22b5\u20d2",
    u"nvsim;": u"\u223c\u20d2",
    u"nwArr;": u"\u21d6",
    u"nwarhk;": u"\u2923",
    u"nwarr;": u"\u2196",
    u"nwarrow;": u"\u2196",
    u"nwnear;": u"\u2927",
    u"oS;": u"\u24c8",
    u"oacute": u"\xf3",
    u"oacute;": u"\xf3",
    u"oast;": u"\u229b",
    u"ocir;": u"\u229a",
    u"ocirc": u"\xf4",
    u"ocirc;": u"\xf4",
    u"ocy;": u"\u043e",
    u"odash;": u"\u229d",
    u"odblac;": u"\u0151",
    u"odiv;": u"\u2a38",
    u"odot;": u"\u2299",
    u"odsold;": u"\u29bc",
    u"oelig;": u"\u0153",
    u"ofcir;": u"\u29bf",
    u"ofr;": u"\U0001d52c",
    u"ogon;": u"\u02db",
    u"ograve": u"\xf2",
    u"ograve;": u"\xf2",
    u"ogt;": u"\u29c1",
    u"ohbar;": u"\u29b5",
    u"ohm;": u"\u03a9",
    u"oint;": u"\u222e",
    u"olarr;": u"\u21ba",
    u"olcir;": u"\u29be",
    u"olcross;": u"\u29bb",
    u"oline;": u"\u203e",
    u"olt;": u"\u29c0",
    u"omacr;": u"\u014d",
    u"omega;": u"\u03c9",
    u"omicron;": u"\u03bf",
    u"omid;": u"\u29b6",
    u"ominus;": u"\u2296",
    u"oopf;": u"\U0001d560",
    u"opar;": u"\u29b7",
    u"operp;": u"\u29b9",
    u"oplus;": u"\u2295",
    u"or;": u"\u2228",
    u"orarr;": u"\u21bb",
    u"ord;": u"\u2a5d",
    u"order;": u"\u2134",
    u"orderof;": u"\u2134",
    u"ordf": u"\xaa",
    u"ordf;": u"\xaa",
    u"ordm": u"\xba",
    u"ordm;": u"\xba",
    u"origof;": u"\u22b6",
    u"oror;": u"\u2a56",
    u"orslope;": u"\u2a57",
    u"orv;": u"\u2a5b",
    u"oscr;": u"\u2134",
    u"oslash": u"\xf8",
    u"oslash;": u"\xf8",
    u"osol;": u"\u2298",
    u"otilde": u"\xf5",
    u"otilde;": u"\xf5",
    u"otimes;": u"\u2297",
    u"otimesas;": u"\u2a36",
    u"ouml": u"\xf6",
    u"ouml;": u"\xf6",
    u"ovbar;": u"\u233d",
    u"par;": u"\u2225",
    u"para": u"\xb6",
    u"para;": u"\xb6",
    u"parallel;": u"\u2225",
    u"parsim;": u"\u2af3",
    u"parsl;": u"\u2afd",
    u"part;": u"\u2202",
    u"pcy;": u"\u043f",
    u"percnt;": u"%",
    u"period;": u".",
    u"permil;": u"\u2030",
    u"perp;": u"\u22a5",
    u"pertenk;": u"\u2031",
    u"pfr;": u"\U0001d52d",
    u"phi;": u"\u03c6",
    u"phiv;": u"\u03d5",
    u"phmmat;": u"\u2133",
    u"phone;": u"\u260e",
    u"pi;": u"\u03c0",
    u"pitchfork;": u"\u22d4",
    u"piv;": u"\u03d6",
    u"planck;": u"\u210f",
    u"planckh;": u"\u210e",
    u"plankv;": u"\u210f",
    u"plus;": u"+",
    u"plusacir;": u"\u2a23",
    u"plusb;": u"\u229e",
    u"pluscir;": u"\u2a22",
    u"plusdo;": u"\u2214",
    u"plusdu;": u"\u2a25",
    u"pluse;": u"\u2a72",
    u"plusmn": u"\xb1",
    u"plusmn;": u"\xb1",
    u"plussim;": u"\u2a26",
    u"plustwo;": u"\u2a27",
    u"pm;": u"\xb1",
    u"pointint;": u"\u2a15",
    u"popf;": u"\U0001d561",
    u"pound": u"\xa3",
    u"pound;": u"\xa3",
    u"pr;": u"\u227a",
    u"prE;": u"\u2ab3",
    u"prap;": u"\u2ab7",
    u"prcue;": u"\u227c",
    u"pre;": u"\u2aaf",
    u"prec;": u"\u227a",
    u"precapprox;": u"\u2ab7",
    u"preccurlyeq;": u"\u227c",
    u"preceq;": u"\u2aaf",
    u"precnapprox;": u"\u2ab9",
    u"precneqq;": u"\u2ab5",
    u"precnsim;": u"\u22e8",
    u"precsim;": u"\u227e",
    u"prime;": u"\u2032",
    u"primes;": u"\u2119",
    u"prnE;": u"\u2ab5",
    u"prnap;": u"\u2ab9",
    u"prnsim;": u"\u22e8",
    u"prod;": u"\u220f",
    u"profalar;": u"\u232e",
    u"profline;": u"\u2312",
    u"profsurf;": u"\u2313",
    u"prop;": u"\u221d",
    u"propto;": u"\u221d",
    u"prsim;": u"\u227e",
    u"prurel;": u"\u22b0",
    u"pscr;": u"\U0001d4c5",
    u"psi;": u"\u03c8",
    u"puncsp;": u"\u2008",
    u"qfr;": u"\U0001d52e",
    u"qint;": u"\u2a0c",
    u"qopf;": u"\U0001d562",
    u"qprime;": u"\u2057",
    u"qscr;": u"\U0001d4c6",
    u"quaternions;": u"\u210d",
    u"quatint;": u"\u2a16",
    u"quest;": u"?",
    u"questeq;": u"\u225f",
    u"quot": u"\"",
    u"quot;": u"\"",
    u"rAarr;": u"\u21db",
    u"rArr;": u"\u21d2",
    u"rAtail;": u"\u291c",
    u"rBarr;": u"\u290f",
    u"rHar;": u"\u2964",
    u"race;": u"\u223d\u0331",
    u"racute;": u"\u0155",
    u"radic;": u"\u221a",
    u"raemptyv;": u"\u29b3",
    u"rang;": u"\u27e9",
    u"rangd;": u"\u2992",
    u"range;": u"\u29a5",
    u"rangle;": u"\u27e9",
    u"raquo": u"\xbb",
    u"raquo;": u"\xbb",
    u"rarr;": u"\u2192",
    u"rarrap;": u"\u2975",
    u"rarrb;": u"\u21e5",
    u"rarrbfs;": u"\u2920",
    u"rarrc;": u"\u2933",
    u"rarrfs;": u"\u291e",
    u"rarrhk;": u"\u21aa",
    u"rarrlp;": u"\u21ac",
    u"rarrpl;": u"\u2945",
    u"rarrsim;": u"\u2974",
    u"rarrtl;": u"\u21a3",
    u"rarrw;": u"\u219d",
    u"ratail;": u"\u291a",
    u"ratio;": u"\u2236",
    u"rationals;": u"\u211a",
    u"rbarr;": u"\u290d",
    u"rbbrk;": u"\u2773",
    u"rbrace;": u"}",
    u"rbrack;": u"]",
    u"rbrke;": u"\u298c",
    u"rbrksld;": u"\u298e",
    u"rbrkslu;": u"\u2990",
    u"rcaron;": u"\u0159",
    u"rcedil;": u"\u0157",
    u"rceil;": u"\u2309",
    u"rcub;": u"}",
    u"rcy;": u"\u0440",
    u"rdca;": u"\u2937",
    u"rdldhar;": u"\u2969",
    u"rdquo;": u"\u201d",
    u"rdquor;": u"\u201d",
    u"rdsh;": u"\u21b3",
    u"real;": u"\u211c",
    u"realine;": u"\u211b",
    u"realpart;": u"\u211c",
    u"reals;": u"\u211d",
    u"rect;": u"\u25ad",
    u"reg": u"\xae",
    u"reg;": u"\xae",
    u"rfisht;": u"\u297d",
    u"rfloor;": u"\u230b",
    u"rfr;": u"\U0001d52f",
    u"rhard;": u"\u21c1",
    u"rharu;": u"\u21c0",
    u"rharul;": u"\u296c",
    u"rho;": u"\u03c1",
    u"rhov;": u"\u03f1",
    u"rightarrow;": u"\u2192",
    u"rightarrowtail;": u"\u21a3",
    u"rightharpoondown;": u"\u21c1",
    u"rightharpoonup;": u"\u21c0",
    u"rightleftarrows;": u"\u21c4",
    u"rightleftharpoons;": u"\u21cc",
    u"rightrightarrows;": u"\u21c9",
    u"rightsquigarrow;": u"\u219d",
    u"rightthreetimes;": u"\u22cc",
    u"ring;": u"\u02da",
    u"risingdotseq;": u"\u2253",
    u"rlarr;": u"\u21c4",
    u"rlhar;": u"\u21cc",
    u"rlm;": u"\u200f",
    u"rmoust;": u"\u23b1",
    u"rmoustache;": u"\u23b1",
    u"rnmid;": u"\u2aee",
    u"roang;": u"\u27ed",
    u"roarr;": u"\u21fe",
    u"robrk;": u"\u27e7",
    u"ropar;": u"\u2986",
    u"ropf;": u"\U0001d563",
    u"roplus;": u"\u2a2e",
    u"rotimes;": u"\u2a35",
    u"rpar;": u")",
    u"rpargt;": u"\u2994",
    u"rppolint;": u"\u2a12",
    u"rrarr;": u"\u21c9",
    u"rsaquo;": u"\u203a",
    u"rscr;": u"\U0001d4c7",
    u"rsh;": u"\u21b1",
    u"rsqb;": u"]",
    u"rsquo;": u"\u2019",
    u"rsquor;": u"\u2019",
    u"rthree;": u"\u22cc",
    u"rtimes;": u"\u22ca",
    u"rtri;": u"\u25b9",
    u"rtrie;": u"\u22b5",
    u"rtrif;": u"\u25b8",
    u"rtriltri;": u"\u29ce",
    u"ruluhar;": u"\u2968",
    u"rx;": u"\u211e",
    u"sacute;": u"\u015b",
    u"sbquo;": u"\u201a",
    u"sc;": u"\u227b",
    u"scE;": u"\u2ab4",
    u"scap;": u"\u2ab8",
    u"scaron;": u"\u0161",
    u"sccue;": u"\u227d",
    u"sce;": u"\u2ab0",
    u"scedil;": u"\u015f",
    u"scirc;": u"\u015d",
    u"scnE;": u"\u2ab6",
    u"scnap;": u"\u2aba",
    u"scnsim;": u"\u22e9",
    u"scpolint;": u"\u2a13",
    u"scsim;": u"\u227f",
    u"scy;": u"\u0441",
    u"sdot;": u"\u22c5",
    u"sdotb;": u"\u22a1",
    u"sdote;": u"\u2a66",
    u"seArr;": u"\u21d8",
    u"searhk;": u"\u2925",
    u"searr;": u"\u2198",
    u"searrow;": u"\u2198",
    u"sect": u"\xa7",
    u"sect;": u"\xa7",
    u"semi;": u";",
    u"seswar;": u"\u2929",
    u"setminus;": u"\u2216",
    u"setmn;": u"\u2216",
    u"sext;": u"\u2736",
    u"sfr;": u"\U0001d530",
    u"sfrown;": u"\u2322",
    u"sharp;": u"\u266f",
    u"shchcy;": u"\u0449",
    u"shcy;": u"\u0448",
    u"shortmid;": u"\u2223",
    u"shortparallel;": u"\u2225",
    u"shy": u"\xad",
    u"shy;": u"\xad",
    u"sigma;": u"\u03c3",
    u"sigmaf;": u"\u03c2",
    u"sigmav;": u"\u03c2",
    u"sim;": u"\u223c",
    u"simdot;": u"\u2a6a",
    u"sime;": u"\u2243",
    u"simeq;": u"\u2243",
    u"simg;": u"\u2a9e",
    u"simgE;": u"\u2aa0",
    u"siml;": u"\u2a9d",
    u"simlE;": u"\u2a9f",
    u"simne;": u"\u2246",
    u"simplus;": u"\u2a24",
    u"simrarr;": u"\u2972",
    u"slarr;": u"\u2190",
    u"smallsetminus;": u"\u2216",
    u"smashp;": u"\u2a33",
    u"smeparsl;": u"\u29e4",
    u"smid;": u"\u2223",
    u"smile;": u"\u2323",
    u"smt;": u"\u2aaa",
    u"smte;": u"\u2aac",
    u"smtes;": u"\u2aac\ufe00",
    u"softcy;": u"\u044c",
    u"sol;": u"/",
    u"solb;": u"\u29c4",
    u"solbar;": u"\u233f",
    u"sopf;": u"\U0001d564",
    u"spades;": u"\u2660",
    u"spadesuit;": u"\u2660",
    u"spar;": u"\u2225",
    u"sqcap;": u"\u2293",
    u"sqcaps;": u"\u2293\ufe00",
    u"sqcup;": u"\u2294",
    u"sqcups;": u"\u2294\ufe00",
    u"sqsub;": u"\u228f",
    u"sqsube;": u"\u2291",
    u"sqsubset;": u"\u228f",
    u"sqsubseteq;": u"\u2291",
    u"sqsup;": u"\u2290",
    u"sqsupe;": u"\u2292",
    u"sqsupset;": u"\u2290",
    u"sqsupseteq;": u"\u2292",
    u"squ;": u"\u25a1",
    u"square;": u"\u25a1",
    u"squarf;": u"\u25aa",
    u"squf;": u"\u25aa",
    u"srarr;": u"\u2192",
    u"sscr;": u"\U0001d4c8",
    u"ssetmn;": u"\u2216",
    u"ssmile;": u"\u2323",
    u"sstarf;": u"\u22c6",
    u"star;": u"\u2606",
    u"starf;": u"\u2605",
    u"straightepsilon;": u"\u03f5",
    u"straightphi;": u"\u03d5",
    u"strns;": u"\xaf",
    u"sub;": u"\u2282",
    u"subE;": u"\u2ac5",
    u"subdot;": u"\u2abd",
    u"sube;": u"\u2286",
    u"subedot;": u"\u2ac3",
    u"submult;": u"\u2ac1",
    u"subnE;": u"\u2acb",
    u"subne;": u"\u228a",
    u"subplus;": u"\u2abf",
    u"subrarr;": u"\u2979",
    u"subset;": u"\u2282",
    u"subseteq;": u"\u2286",
    u"subseteqq;": u"\u2ac5",
    u"subsetneq;": u"\u228a",
    u"subsetneqq;": u"\u2acb",
    u"subsim;": u"\u2ac7",
    u"subsub;": u"\u2ad5",
    u"subsup;": u"\u2ad3",
    u"succ;": u"\u227b",
    u"succapprox;": u"\u2ab8",
    u"succcurlyeq;": u"\u227d",
    u"succeq;": u"\u2ab0",
    u"succnapprox;": u"\u2aba",
    u"succneqq;": u"\u2ab6",
    u"succnsim;": u"\u22e9",
    u"succsim;": u"\u227f",
    u"sum;": u"\u2211",
    u"sung;": u"\u266a",
    u"sup1": u"\xb9",
    u"sup1;": u"\xb9",
    u"sup2": u"\xb2",
    u"sup2;": u"\xb2",
    u"sup3": u"\xb3",
    u"sup3;": u"\xb3",
    u"sup;": u"\u2283",
    u"supE;": u"\u2ac6",
    u"supdot;": u"\u2abe",
    u"supdsub;": u"\u2ad8",
    u"supe;": u"\u2287",
    u"supedot;": u"\u2ac4",
    u"suphsol;": u"\u27c9",
    u"suphsub;": u"\u2ad7",
    u"suplarr;": u"\u297b",
    u"supmult;": u"\u2ac2",
    u"supnE;": u"\u2acc",
    u"supne;": u"\u228b",
    u"supplus;": u"\u2ac0",
    u"supset;": u"\u2283",
    u"supseteq;": u"\u2287",
    u"supseteqq;": u"\u2ac6",
    u"supsetneq;": u"\u228b",
    u"supsetneqq;": u"\u2acc",
    u"supsim;": u"\u2ac8",
    u"supsub;": u"\u2ad4",
    u"supsup;": u"\u2ad6",
    u"swArr;": u"\u21d9",
    u"swarhk;": u"\u2926",
    u"swarr;": u"\u2199",
    u"swarrow;": u"\u2199",
    u"swnwar;": u"\u292a",
    u"szlig": u"\xdf",
    u"szlig;": u"\xdf",
    u"target;": u"\u2316",
    u"tau;": u"\u03c4",
    u"tbrk;": u"\u23b4",
    u"tcaron;": u"\u0165",
    u"tcedil;": u"\u0163",
    u"tcy;": u"\u0442",
    u"tdot;": u"\u20db",
    u"telrec;": u"\u2315",
    u"tfr;": u"\U0001d531",
    u"there4;": u"\u2234",
    u"therefore;": u"\u2234",
    u"theta;": u"\u03b8",
    u"thetasym;": u"\u03d1",
    u"thetav;": u"\u03d1",
    u"thickapprox;": u"\u2248",
    u"thicksim;": u"\u223c",
    u"thinsp;": u"\u2009",
    u"thkap;": u"\u2248",
    u"thksim;": u"\u223c",
    u"thorn": u"\xfe",
    u"thorn;": u"\xfe",
    u"tilde;": u"\u02dc",
    u"times": u"\xd7",
    u"times;": u"\xd7",
    u"timesb;": u"\u22a0",
    u"timesbar;": u"\u2a31",
    u"timesd;": u"\u2a30",
    u"tint;": u"\u222d",
    u"toea;": u"\u2928",
    u"top;": u"\u22a4",
    u"topbot;": u"\u2336",
    u"topcir;": u"\u2af1",
    u"topf;": u"\U0001d565",
    u"topfork;": u"\u2ada",
    u"tosa;": u"\u2929",
    u"tprime;": u"\u2034",
    u"trade;": u"\u2122",
    u"triangle;": u"\u25b5",
    u"triangledown;": u"\u25bf",
    u"triangleleft;": u"\u25c3",
    u"trianglelefteq;": u"\u22b4",
    u"triangleq;": u"\u225c",
    u"triangleright;": u"\u25b9",
    u"trianglerighteq;": u"\u22b5",
    u"tridot;": u"\u25ec",
    u"trie;": u"\u225c",
    u"triminus;": u"\u2a3a",
    u"triplus;": u"\u2a39",
    u"trisb;": u"\u29cd",
    u"tritime;": u"\u2a3b",
    u"trpezium;": u"\u23e2",
    u"tscr;": u"\U0001d4c9",
    u"tscy;": u"\u0446",
    u"tshcy;": u"\u045b",
    u"tstrok;": u"\u0167",
    u"twixt;": u"\u226c",
    u"twoheadleftarrow;": u"\u219e",
    u"twoheadrightarrow;": u"\u21a0",
    u"uArr;": u"\u21d1",
    u"uHar;": u"\u2963",
    u"uacute": u"\xfa",
    u"uacute;": u"\xfa",
    u"uarr;": u"\u2191",
    u"ubrcy;": u"\u045e",
    u"ubreve;": u"\u016d",
    u"ucirc": u"\xfb",
    u"ucirc;": u"\xfb",
    u"ucy;": u"\u0443",
    u"udarr;": u"\u21c5",
    u"udblac;": u"\u0171",
    u"udhar;": u"\u296e",
    u"ufisht;": u"\u297e",
    u"ufr;": u"\U0001d532",
    u"ugrave": u"\xf9",
    u"ugrave;": u"\xf9",
    u"uharl;": u"\u21bf",
    u"uharr;": u"\u21be",
    u"uhblk;": u"\u2580",
    u"ulcorn;": u"\u231c",
    u"ulcorner;": u"\u231c",
    u"ulcrop;": u"\u230f",
    u"ultri;": u"\u25f8",
    u"umacr;": u"\u016b",
    u"uml": u"\xa8",
    u"uml;": u"\xa8",
    u"uogon;": u"\u0173",
    u"uopf;": u"\U0001d566",
    u"uparrow;": u"\u2191",
    u"updownarrow;": u"\u2195",
    u"upharpoonleft;": u"\u21bf",
    u"upharpoonright;": u"\u21be",
    u"uplus;": u"\u228e",
    u"upsi;": u"\u03c5",
    u"upsih;": u"\u03d2",
    u"upsilon;": u"\u03c5",
    u"upuparrows;": u"\u21c8",
    u"urcorn;": u"\u231d",
    u"urcorner;": u"\u231d",
    u"urcrop;": u"\u230e",
    u"uring;": u"\u016f",
    u"urtri;": u"\u25f9",
    u"uscr;": u"\U0001d4ca",
    u"utdot;": u"\u22f0",
    u"utilde;": u"\u0169",
    u"utri;": u"\u25b5",
    u"utrif;": u"\u25b4",
    u"uuarr;": u"\u21c8",
    u"uuml": u"\xfc",
    u"uuml;": u"\xfc",
    u"uwangle;": u"\u29a7",
    u"vArr;": u"\u21d5",
    u"vBar;": u"\u2ae8",
    u"vBarv;": u"\u2ae9",
    u"vDash;": u"\u22a8",
    u"vangrt;": u"\u299c",
    u"varepsilon;": u"\u03f5",
    u"varkappa;": u"\u03f0",
    u"varnothing;": u"\u2205",
    u"varphi;": u"\u03d5",
    u"varpi;": u"\u03d6",
    u"varpropto;": u"\u221d",
    u"varr;": u"\u2195",
    u"varrho;": u"\u03f1",
    u"varsigma;": u"\u03c2",
    u"varsubsetneq;": u"\u228a\ufe00",
    u"varsubsetneqq;": u"\u2acb\ufe00",
    u"varsupsetneq;": u"\u228b\ufe00",
    u"varsupsetneqq;": u"\u2acc\ufe00",
    u"vartheta;": u"\u03d1",
    u"vartriangleleft;": u"\u22b2",
    u"vartriangleright;": u"\u22b3",
    u"vcy;": u"\u0432",
    u"vdash;": u"\u22a2",
    u"vee;": u"\u2228",
    u"veebar;": u"\u22bb",
    u"veeeq;": u"\u225a",
    u"vellip;": u"\u22ee",
    u"verbar;": u"|",
    u"vert;": u"|",
    u"vfr;": u"\U0001d533",
    u"vltri;": u"\u22b2",
    u"vnsub;": u"\u2282\u20d2",
    u"vnsup;": u"\u2283\u20d2",
    u"vopf;": u"\U0001d567",
    u"vprop;": u"\u221d",
    u"vrtri;": u"\u22b3",
    u"vscr;": u"\U0001d4cb",
    u"vsubnE;": u"\u2acb\ufe00",
    u"vsubne;": u"\u228a\ufe00",
    u"vsupnE;": u"\u2acc\ufe00",
    u"vsupne;": u"\u228b\ufe00",
    u"vzigzag;": u"\u299a",
    u"wcirc;": u"\u0175",
    u"wedbar;": u"\u2a5f",
    u"wedge;": u"\u2227",
    u"wedgeq;": u"\u2259",
    u"weierp;": u"\u2118",
    u"wfr;": u"\U0001d534",
    u"wopf;": u"\U0001d568",
    u"wp;": u"\u2118",
    u"wr;": u"\u2240",
    u"wreath;": u"\u2240",
    u"wscr;": u"\U0001d4cc",
    u"xcap;": u"\u22c2",
    u"xcirc;": u"\u25ef",
    u"xcup;": u"\u22c3",
    u"xdtri;": u"\u25bd",
    u"xfr;": u"\U0001d535",
    u"xhArr;": u"\u27fa",
    u"xharr;": u"\u27f7",
    u"xi;": u"\u03be",
    u"xlArr;": u"\u27f8",
    u"xlarr;": u"\u27f5",
    u"xmap;": u"\u27fc",
    u"xnis;": u"\u22fb",
    u"xodot;": u"\u2a00",
    u"xopf;": u"\U0001d569",
    u"xoplus;": u"\u2a01",
    u"xotime;": u"\u2a02",
    u"xrArr;": u"\u27f9",
    u"xrarr;": u"\u27f6",
    u"xscr;": u"\U0001d4cd",
    u"xsqcup;": u"\u2a06",
    u"xuplus;": u"\u2a04",
    u"xutri;": u"\u25b3",
    u"xvee;": u"\u22c1",
    u"xwedge;": u"\u22c0",
    u"yacute": u"\xfd",
    u"yacute;": u"\xfd",
    u"yacy;": u"\u044f",
    u"ycirc;": u"\u0177",
    u"ycy;": u"\u044b",
    u"yen": u"\xa5",
    u"yen;": u"\xa5",
    u"yfr;": u"\U0001d536",
    u"yicy;": u"\u0457",
    u"yopf;": u"\U0001d56a",
    u"yscr;": u"\U0001d4ce",
    u"yucy;": u"\u044e",
    u"yuml": u"\xff",
    u"yuml;": u"\xff",
    u"zacute;": u"\u017a",
    u"zcaron;": u"\u017e",
    u"zcy;": u"\u0437",
    u"zdot;": u"\u017c",
    u"zeetrf;": u"\u2128",
    u"zeta;": u"\u03b6",
    u"zfr;": u"\U0001d537",
    u"zhcy;": u"\u0436",
    u"zigrarr;": u"\u21dd",
    u"zopf;": u"\U0001d56b",
    u"zscr;": u"\U0001d4cf",
    u"zwj;": u"\u200d",
    u"zwnj;": u"\u200c",
}

replacementCharacters = {
    0x0:u"\uFFFD",
    0x0d:u"\u000D",
    0x80:u"\u20AC",
    0x81:u"\u0081",
    0x81:u"\u0081",
    0x82:u"\u201A",
    0x83:u"\u0192",
    0x84:u"\u201E",
    0x85:u"\u2026",
    0x86:u"\u2020",
    0x87:u"\u2021",
    0x88:u"\u02C6",
    0x89:u"\u2030",
    0x8A:u"\u0160",
    0x8B:u"\u2039",
    0x8C:u"\u0152",
    0x8D:u"\u008D",
    0x8E:u"\u017D",
    0x8F:u"\u008F",
    0x90:u"\u0090",
    0x91:u"\u2018",
    0x92:u"\u2019",
    0x93:u"\u201C",
    0x94:u"\u201D",
    0x95:u"\u2022",
    0x96:u"\u2013",
    0x97:u"\u2014",
    0x98:u"\u02DC",
    0x99:u"\u2122",
    0x9A:u"\u0161",
    0x9B:u"\u203A",
    0x9C:u"\u0153",
    0x9D:u"\u009D",
    0x9E:u"\u017E",
    0x9F:u"\u0178",
}

encodings = {
    u'437': u'cp437',
    u'850': u'cp850',
    u'852': u'cp852',
    u'855': u'cp855',
    u'857': u'cp857',
    u'860': u'cp860',
    u'861': u'cp861',
    u'862': u'cp862',
    u'863': u'cp863',
    u'865': u'cp865',
    u'866': u'cp866',
    u'869': u'cp869',
    u'ansix341968': u'ascii',
    u'ansix341986': u'ascii',
    u'arabic': u'iso8859-6',
    u'ascii': u'ascii',
    u'asmo708': u'iso8859-6',
    u'big5': u'big5',
    u'big5hkscs': u'big5hkscs',
    u'chinese': u'gbk',
    u'cp037': u'cp037',
    u'cp1026': u'cp1026',
    u'cp154': u'ptcp154',
    u'cp367': u'ascii',
    u'cp424': u'cp424',
    u'cp437': u'cp437',
    u'cp500': u'cp500',
    u'cp775': u'cp775',
    u'cp819': u'windows-1252',
    u'cp850': u'cp850',
    u'cp852': u'cp852',
    u'cp855': u'cp855',
    u'cp857': u'cp857',
    u'cp860': u'cp860',
    u'cp861': u'cp861',
    u'cp862': u'cp862',
    u'cp863': u'cp863',
    u'cp864': u'cp864',
    u'cp865': u'cp865',
    u'cp866': u'cp866',
    u'cp869': u'cp869',
    u'cp936': u'gbk',
    u'cpgr': u'cp869',
    u'cpis': u'cp861',
    u'csascii': u'ascii',
    u'csbig5': u'big5',
    u'cseuckr': u'cp949',
    u'cseucpkdfmtjapanese': u'euc_jp',
    u'csgb2312': u'gbk',
    u'cshproman8': u'hp-roman8',
    u'csibm037': u'cp037',
    u'csibm1026': u'cp1026',
    u'csibm424': u'cp424',
    u'csibm500': u'cp500',
    u'csibm855': u'cp855',
    u'csibm857': u'cp857',
    u'csibm860': u'cp860',
    u'csibm861': u'cp861',
    u'csibm863': u'cp863',
    u'csibm864': u'cp864',
    u'csibm865': u'cp865',
    u'csibm866': u'cp866',
    u'csibm869': u'cp869',
    u'csiso2022jp': u'iso2022_jp',
    u'csiso2022jp2': u'iso2022_jp_2',
    u'csiso2022kr': u'iso2022_kr',
    u'csiso58gb231280': u'gbk',
    u'csisolatin1': u'windows-1252',
    u'csisolatin2': u'iso8859-2',
    u'csisolatin3': u'iso8859-3',
    u'csisolatin4': u'iso8859-4',
    u'csisolatin5': u'windows-1254',
    u'csisolatin6': u'iso8859-10',
    u'csisolatinarabic': u'iso8859-6',
    u'csisolatincyrillic': u'iso8859-5',
    u'csisolatingreek': u'iso8859-7',
    u'csisolatinhebrew': u'iso8859-8',
    u'cskoi8r': u'koi8-r',
    u'csksc56011987': u'cp949',
    u'cspc775baltic': u'cp775',
    u'cspc850multilingual': u'cp850',
    u'cspc862latinhebrew': u'cp862',
    u'cspc8codepage437': u'cp437',
    u'cspcp852': u'cp852',
    u'csptcp154': u'ptcp154',
    u'csshiftjis': u'shift_jis',
    u'csunicode11utf7': u'utf-7',
    u'cyrillic': u'iso8859-5',
    u'cyrillicasian': u'ptcp154',
    u'ebcdiccpbe': u'cp500',
    u'ebcdiccpca': u'cp037',
    u'ebcdiccpch': u'cp500',
    u'ebcdiccphe': u'cp424',
    u'ebcdiccpnl': u'cp037',
    u'ebcdiccpus': u'cp037',
    u'ebcdiccpwt': u'cp037',
    u'ecma114': u'iso8859-6',
    u'ecma118': u'iso8859-7',
    u'elot928': u'iso8859-7',
    u'eucjp': u'euc_jp',
    u'euckr': u'cp949',
    u'extendedunixcodepackedformatforjapanese': u'euc_jp',
    u'gb18030': u'gb18030',
    u'gb2312': u'gbk',
    u'gb231280': u'gbk',
    u'gbk': u'gbk',
    u'greek': u'iso8859-7',
    u'greek8': u'iso8859-7',
    u'hebrew': u'iso8859-8',
    u'hproman8': u'hp-roman8',
    u'hzgb2312': u'hz',
    u'ibm037': u'cp037',
    u'ibm1026': u'cp1026',
    u'ibm367': u'ascii',
    u'ibm424': u'cp424',
    u'ibm437': u'cp437',
    u'ibm500': u'cp500',
    u'ibm775': u'cp775',
    u'ibm819': u'windows-1252',
    u'ibm850': u'cp850',
    u'ibm852': u'cp852',
    u'ibm855': u'cp855',
    u'ibm857': u'cp857',
    u'ibm860': u'cp860',
    u'ibm861': u'cp861',
    u'ibm862': u'cp862',
    u'ibm863': u'cp863',
    u'ibm864': u'cp864',
    u'ibm865': u'cp865',
    u'ibm866': u'cp866',
    u'ibm869': u'cp869',
    u'iso2022jp': u'iso2022_jp',
    u'iso2022jp2': u'iso2022_jp_2',
    u'iso2022kr': u'iso2022_kr',
    u'iso646irv1991': u'ascii',
    u'iso646us': u'ascii',
    u'iso88591': u'windows-1252',
    u'iso885910': u'iso8859-10',
    u'iso8859101992': u'iso8859-10',
    u'iso885911987': u'windows-1252',
    u'iso885913': u'iso8859-13',
    u'iso885914': u'iso8859-14',
    u'iso8859141998': u'iso8859-14',
    u'iso885915': u'iso8859-15',
    u'iso885916': u'iso8859-16',
    u'iso8859162001': u'iso8859-16',
    u'iso88592': u'iso8859-2',
    u'iso885921987': u'iso8859-2',
    u'iso88593': u'iso8859-3',
    u'iso885931988': u'iso8859-3',
    u'iso88594': u'iso8859-4',
    u'iso885941988': u'iso8859-4',
    u'iso88595': u'iso8859-5',
    u'iso885951988': u'iso8859-5',
    u'iso88596': u'iso8859-6',
    u'iso885961987': u'iso8859-6',
    u'iso88597': u'iso8859-7',
    u'iso885971987': u'iso8859-7',
    u'iso88598': u'iso8859-8',
    u'iso885981988': u'iso8859-8',
    u'iso88599': u'windows-1254',
    u'iso885991989': u'windows-1254',
    u'isoceltic': u'iso8859-14',
    u'isoir100': u'windows-1252',
    u'isoir101': u'iso8859-2',
    u'isoir109': u'iso8859-3',
    u'isoir110': u'iso8859-4',
    u'isoir126': u'iso8859-7',
    u'isoir127': u'iso8859-6',
    u'isoir138': u'iso8859-8',
    u'isoir144': u'iso8859-5',
    u'isoir148': u'windows-1254',
    u'isoir149': u'cp949',
    u'isoir157': u'iso8859-10',
    u'isoir199': u'iso8859-14',
    u'isoir226': u'iso8859-16',
    u'isoir58': u'gbk',
    u'isoir6': u'ascii',
    u'koi8r': u'koi8-r',
    u'koi8u': u'koi8-u',
    u'korean': u'cp949',
    u'ksc5601': u'cp949',
    u'ksc56011987': u'cp949',
    u'ksc56011989': u'cp949',
    u'l1': u'windows-1252',
    u'l10': u'iso8859-16',
    u'l2': u'iso8859-2',
    u'l3': u'iso8859-3',
    u'l4': u'iso8859-4',
    u'l5': u'windows-1254',
    u'l6': u'iso8859-10',
    u'l8': u'iso8859-14',
    u'latin1': u'windows-1252',
    u'latin10': u'iso8859-16',
    u'latin2': u'iso8859-2',
    u'latin3': u'iso8859-3',
    u'latin4': u'iso8859-4',
    u'latin5': u'windows-1254',
    u'latin6': u'iso8859-10',
    u'latin8': u'iso8859-14',
    u'latin9': u'iso8859-15',
    u'ms936': u'gbk',
    u'mskanji': u'shift_jis',
    u'pt154': u'ptcp154',
    u'ptcp154': u'ptcp154',
    u'r8': u'hp-roman8',
    u'roman8': u'hp-roman8',
    u'shiftjis': u'shift_jis',
    u'tis620': u'cp874',
    u'unicode11utf7': u'utf-7',
    u'us': u'ascii',
    u'usascii': u'ascii',
    u'utf16': u'utf-16',
    u'utf16be': u'utf-16-be',
    u'utf16le': u'utf-16-le',
    u'utf8': u'utf-8',
    u'windows1250': u'cp1250',
    u'windows1251': u'cp1251',
    u'windows1252': u'cp1252',
    u'windows1253': u'cp1253',
    u'windows1254': u'cp1254',
    u'windows1255': u'cp1255',
    u'windows1256': u'cp1256',
    u'windows1257': u'cp1257',
    u'windows1258': u'cp1258',
    u'windows936': u'gbk',
    u'x-x-big5': u'big5'}

tokenTypes = {
    u"Doctype":0,
    u"Characters":1,
    u"SpaceCharacters":2,
    u"StartTag":3,
    u"EndTag":4,
    u"EmptyTag":5,
    u"Comment":6,
    u"ParseError":7
}

tagTokenTypes = frozenset((tokenTypes[u"StartTag"], tokenTypes[u"EndTag"], 
                           tokenTypes[u"EmptyTag"]))


prefixes = dict([(v,k) for k,v in namespaces.items()])
prefixes[u"http://www.w3.org/1998/Math/MathML"] = u"math"

class DataLossWarning(UserWarning):
    pass

class ReparseException(Exception):
    pass
